一、如何实现分页展示?
QStackedLayout类可对窗口实现分页展示,每次只显示一个布局,将其他页的布局隐藏。为方便,Qt提供一个内置QStackedLayout的便利类:QStackedWidget.
方案:QStackedWidget+QListWidget/QPushButton等
步骤:(1)基于QDialog或QWidget创建一个新窗体
(2)添加一个QListWidget或若干个QPushButton和一个QStackedWidget
(3)完成每个分页的布局(QtDesigner中创建新分页的方法:QStackedWidget中右键选择“Insert Page”;切换分页的方法:右上角箭头)
(4)建立信号槽:将QListWidget的currentRowChanged(或currentItemChanged)与QStackedWidget的槽setCurrentIndex连接起来。
(QPushButton连接clicked信号)
二、如何实现切分窗口
利用QSplitter嵌套可实现较复杂的窗口切分布局,如下图所示:
三、实战演练
1.分页布局示例如下:
分页布局效果展示:
点击test1项目展示对应页面
点击test2项目展示对应页面
2.切分窗口示例如下:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QSplitter *rightSplitter=new QSplitter(Qt::Vertical);
rightSplitter->addWidget(ui->treeWidget_2);
rightSplitter->addWidget(ui->textEdit);
rightSplitter->setStretchFactor(1,1);
QSplitter *mainSplitter=new QSplitter(Qt::Horizontal);
mainSplitter->addWidget(ui->treeWidget);
mainSplitter->addWidget(rightSplitter);
mainSplitter->setStretchFactor(1,1
);
setCentralWidget(mainSplitter);
}
切分窗口效果展示: