QTabWidget添加其它Wdiget的2个函数如下:
QTabWidget的介绍可参考官网QTabWidget Class | Qt Widgets | Qt 6.9.1
直接上代码,代码如下:
#include <QMainWindow>#include <QApplication>
#include <QVBoxLayout>
#include <QPushButton>
#include <QLineEdit>
#include <QScreen>int nWidth = 800;
int nHeight = 600;// 移动窗口到屏幕中央
void MoveCenter(QMainWindow& w){// 获取屏幕信息QScreen *screen = QGuiApplication::primaryScreen();QRect screenGeometry = screen->geometry();int screenWidth = screenGeometry.width();int screenHeight = screenGeometry.height();// 计算窗口居中位置int x = (screenWidth - nWidth) / 2;int y = (screenHeight - nHeight) / 2;w.move(x, y);
}int main(int argc, char *argv[])
{QApplication a(argc, argv);QMainWindow w;w.setGeometry(0,0,nWidth,nHeight);MoveCenter(w);// 设置中央控件QTabWidget *centralWidget = new QTabWidget(&w);w.setCentralWidget(centralWidget);//////////////////// widget1 //////////////////////////////QWidget *widget1 = new QWidget();QVBoxLayout *mainlayout1 = new QVBoxLayout(widget1);// 子水平布局(用于 Button 1 和 Button 2 水平排列)QHBoxLayout *buttonLayout1 = new QHBoxLayout();buttonLayout1->addWidget(new QPushButton("Button 1"));buttonLayout1->addWidget(new QPushButton("Button 2"));// 添加按钮布局到主布局mainlayout1->addLayout(buttonLayout1); //index =0// 设置拉伸因子,使 QLineEdit 占据剩余空间QLineEdit *lineEdit = new QLineEdit();lineEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);mainlayout1->addWidget(lineEdit); //index =1mainlayout1->setStretch(0, 0); // 按钮布局不拉伸mainlayout1->setStretch(1, 1); // QLineEdit 拉伸填充剩余空间//////////////////// widget2 //////////////////////////////QWidget *widget2 = new QWidget();// 主垂直布局(用于上下排列按钮和输入框)QVBoxLayout *mainlayout2 = new QVBoxLayout(widget2);// 子水平布局(用于 Button 1 和 Button 2 水平排列)QHBoxLayout *buttonLayout2 = new QHBoxLayout();buttonLayout2->addWidget(new QPushButton("Button 1"));buttonLayout2->addWidget(new QPushButton("Button 2"));// 添加按钮布局到主布局mainlayout2->addLayout(buttonLayout2);// 添加 QLineEdit 到主布局(默认在按钮下方)QLineEdit *lineEdit2 = new QLineEdit();mainlayout2->addWidget(lineEdit2);//使用弹簧填充剩余距离mainlayout2->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding));//////////////////////// 添加tabWdiget ///////////////centralWidget->addTab(widget1,"1");centralWidget->addTab(widget2,"2");w.show();return a.exec();
}
上面的代码运行结果如下:
网上其它的资料可参考:QT界面:tabWidget选项卡使用小结_qt怎么将ui界面放入到tabwidget-CSDN博客
QTabWidget——创建标签页的多页面切换_qt tabwidget 标签切换 信号-CSDN博客
附加:
1、QDataStream 类实现了 C++ 基本数据类型的序列化,可参考官网
QDataStream Class | Qt Core | Qt 6.9.1
2、Qt 库提供了一组基于模板的通用容器类。这些类可用于存储指定类型的项目。可参考官网
Container Classes | Qt Core | Qt 6.9.1