#include <QtGui>
#include <QApplication>
class DoubleTabWidget
: public QWidget{
Q_OBJECT
public:
explicit DoubleTabWidget(DoubleTabWidget * parent = 0)
, row(0)
, col(0)
{
gridLayout->addWidget(hTabBar, 0, 1, 1, 1);
gridLayout->addWidget(vTabBar, 1, 0, 1, 1);
gridLayout->addWidget(viewPort, 1, 1, 1, 1);
hTabBar
->setShape
(QTabBar::RoundedNorth);
vTabBar
->setShape
(QTabBar::RoundedWest);
connect(vTabBar, SIGNAL(currentChanged(int)), SLOT(setRow(int)));
connect(hTabBar, SIGNAL(currentChanged(int)), SLOT(setCol(int)));
addSampleWidget();
}
private slots:
void setRow(int r)
{
row = r;
updateWidget();
}
void setCol(int c)
{
col = c;
updateWidget();
}
private:
int row;
int col;
QList<QList<QWidget *> > widgets;
void updateWidget(void)
{
if(col < widgets.count())
if(row < widgets.at(col).count())
viewPort->setCurrentWidget(widgets.at(col).at(row));
}
QWidget * createWidget
(int r,
int c
) {
gridLayout->addWidget(label);
gridLayout->setAlignment(label, Qt::AlignCenter);
widget->setLayout(gridLayout);
return widget;
}
void addSampleWidget(void)
{
QList<QWidget *> wids;
for(int i = 0; i < 5; i++)
hTabBar
->addTab
(QString("Widget %1").
arg(i
));
for(int j = 0; j < 5; j++)
vTabBar
->addTab
(QString("Widget %1").
arg(j
));
for(int i = 0; i < 5; i++)
{
wids.clear();
for(int j = 0; j < 5; j++)
{
QWidget * widget
= createWidget
(i, j
);
wids.append(widget);
viewPort->addWidget(widget);
}
widgets.append(wids);
}
}
};
int main(int argc, char *argv[])
{
DoubleTabWidget tabWidget;
tabWidget.show();
return app.exec();
}
#include "main.moc"
#include <QtGui>
#include <QApplication>
class DoubleTabWidget : public QWidget
{
Q_OBJECT
public:
explicit DoubleTabWidget(DoubleTabWidget * parent = 0)
: QWidget(parent)
, row(0)
, col(0)
, hTabBar(new QTabBar)
, vTabBar(new QTabBar)
, viewPort(new QStackedWidget)
{
QGridLayout * gridLayout = new QGridLayout(this);
gridLayout->addWidget(hTabBar, 0, 1, 1, 1);
gridLayout->addWidget(vTabBar, 1, 0, 1, 1);
gridLayout->addWidget(viewPort, 1, 1, 1, 1);
hTabBar->setShape(QTabBar::RoundedNorth);
vTabBar->setShape(QTabBar::RoundedWest);
connect(vTabBar, SIGNAL(currentChanged(int)), SLOT(setRow(int)));
connect(hTabBar, SIGNAL(currentChanged(int)), SLOT(setCol(int)));
addSampleWidget();
}
private slots:
void setRow(int r)
{
row = r;
updateWidget();
}
void setCol(int c)
{
col = c;
updateWidget();
}
private:
int row;
int col;
QTabBar * hTabBar;
QTabBar * vTabBar;
QStackedWidget * viewPort;
QList<QList<QWidget *> > widgets;
void updateWidget(void)
{
if(col < widgets.count())
if(row < widgets.at(col).count())
viewPort->setCurrentWidget(widgets.at(col).at(row));
}
QWidget * createWidget(int r, int c)
{
const QString name = QString("QWidget (%1, %2)").arg(r).arg(c);
QWidget * widget = new QGroupBox;
QGridLayout * gridLayout = new QGridLayout;
QWidget * label = new QLabel(name);
gridLayout->addWidget(label);
gridLayout->setAlignment(label, Qt::AlignCenter);
widget->setLayout(gridLayout);
return widget;
}
void addSampleWidget(void)
{
QList<QWidget *> wids;
for(int i = 0; i < 5; i++)
hTabBar->addTab(QString("Widget %1").arg(i));
for(int j = 0; j < 5; j++)
vTabBar->addTab(QString("Widget %1").arg(j));
for(int i = 0; i < 5; i++)
{
wids.clear();
for(int j = 0; j < 5; j++)
{
QWidget * widget = createWidget(i, j);
wids.append(widget);
viewPort->addWidget(widget);
}
widgets.append(wids);
}
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
DoubleTabWidget tabWidget;
tabWidget.show();
return app.exec();
}
#include "main.moc"
To copy to clipboard, switch view to plain text mode
Bookmarks