1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| #include <QApplication> #include <QWidget> #include <QTabWidget> #include <QVBoxLayout> #include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QIcon>
void setupTabWidgetDemo(QWidget *parent) { QVBoxLayout *mainLayout = new QVBoxLayout(parent);
QTabWidget *tabWidget = new QTabWidget(parent);
QWidget *tab1 = new QWidget(); QVBoxLayout *layout1 = new QVBoxLayout(tab1); layout1->addWidget(new QLabel("姓名:")); layout1->addWidget(new QLineEdit("张三", tab1)); layout1->addWidget(new QLabel("职位:")); layout1->addWidget(new QLineEdit("开发者", tab1)); layout1->addStretch();
QWidget *tab2 = new QWidget(); QVBoxLayout *layout2 = new QVBoxLayout(tab2); layout2->addWidget(new QPushButton("开启消息推送", tab2)); layout2->addWidget(new QPushButton("检查版本更新", tab2)); layout2->addStretch();
tabWidget->addTab(tab1, "基本资料"); tabWidget->addTab(tab2, "系统设置");
tabWidget->setTabIcon(0, QIcon::fromTheme("user-info")); tabWidget->setTabsClosable(true); tabWidget->setMovable(true);
QObject::connect(tabWidget, &QTabWidget::currentChanged, [](int index) { qDebug() << "切换到了第" << index + 1 << "个页签"; });
QObject::connect(tabWidget, &QTabWidget::tabCloseRequested, [tabWidget](int index) { tabWidget->removeTab(index); });
mainLayout->addWidget(tabWidget); }
int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget w; w.setWindowTitle("QTabWidget 布局专家"); w.resize(400, 300); setupTabWidgetDemo(&w); w.show(); return a.exec(); }
|