Qt分页布局与切分窗口的实现

一、如何实现分页展示?

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嵌套可实现较复杂的窗口切分布局,如下图所示:

Qt分页布局与切分窗口的实现_第1张图片


三、实战演练

1.分页布局示例如下:

Qt分页布局与切分窗口的实现_第2张图片


Qt分页布局与切分窗口的实现_第3张图片

分页布局效果展示:

点击test1项目展示对应页面

Qt分页布局与切分窗口的实现_第4张图片

点击test2项目展示对应页面

Qt分页布局与切分窗口的实现_第5张图片


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);

}

切分窗口效果展示:

Qt分页布局与切分窗口的实现_第6张图片


你可能感兴趣的:(Qt)