Qt 多窗口界面设计 - 使用 QSplitter 和 QStackedWidget 实现
Qt 多窗口界面设计 - 使用 QSplitter 和 QStackedWidget 实现
本示例展示如何使用 Qt 的 QSplitter 和 QStackedWidget 组件构建多窗口界面,并通过列表控件控制不同窗口的显示。
代码示例:
#include <widget.h>
#include <QApplication>
#include <QSplitter>
#include <QListWidget>
#include <QLayout>
#include <QStackedWidget>
#include <QPushButton>
#include "form1.h"
#include "form2.h"
#include "form3.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QSplitter *a1 = new QSplitter(Qt::Horizontal);//主分割水平
QListWidget *b = new QListWidget(a1);//左侧列表
b->addItem('三角形的面积计算');
b->addItem('矩形的面积计算');
b->addItem('圆的面积计算');
//创建右侧部分
QWidget *p = new QWidget(a1);
QVBoxLayout *c = new QVBoxLayout(p);
QStackedWidget *c1 = new QStackedWidget;
//水平布局
QHBoxLayout *h = new QHBoxLayout;
//QPushButton *ps = new QPushButton('修改');
QPushButton *ps1 = new QPushButton('关闭');
//QObject::connect(ps1, &QPushButton::clicked, &w, &QWidget::close);
QObject::connect(ps1, &QPushButton::clicked, &a, &QApplication::quit);//槽函数关闭窗口
//h->addWidget(ps);
h->addWidget(ps1);
h->setAlignment(Qt::AlignRight);
//把右侧的放入垂直
c->addWidget(c1);
c->addLayout(h);
//w.show();
//使用Qt界面类创建层叠
Form1 *d = new Form1;
Form2 *d1 = new Form2;
Form3 *d2 = new Form3;
c1->addWidget(d);//将页面加入层叠
c1->addWidget(d1);
c1->addWidget(d2);
QObject::connect(b, &QListWidget::currentRowChanged, c1, &QStackedWidget::setCurrentIndex);//利用槽函数点击列表对应跳转
a1->show();//展示
return a.exec();
}
系统模块图:
+--------------------------------------------------------+
| main |
+--------------------------------------------------------+
|
|
|
|
+--------------------------------+
| QApplication |
+--------------------------------+
|
|
|
|
+-----------------------+------------------------+
| |
| |
+----+-----------------------+ +---------+--------------+
| QSplitter | | QListWidget |
+-----------------------------+ +-----------------------+
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| QWidget | | |
| | | |
| | | |
| | | |
| | | |
| | | |
+-----------------------------+ +-----------------------+
| |
| |
+----+-----------------------+ +---------+--------------+
| QVBoxLayout | | QStackedWidget |
+-----------------------------+ +-----------------------+
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| QHBoxLayout | | |
| | | |
| | | |
| | | |
| | | |
| | | |
+-----------------------------+ +-----------------------+
| |
| |
+----+-----------------------+ +---------+--------------+
| Form1 | | Form2 |
+-----------------------------+ +-----------------------+
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
+-----------------------------+ +-----------------------+
| |
| |
+----+-----------------------+ +---------+--------------+
| Form3 | | QPushButton |
+-----------------------------+ +-----------------------+
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
+-----------------------------+ +-----------------------+
代码解释:
- 使用
QSplitter创建水平分割的窗口。 - 左侧使用
QListWidget显示不同的计算选项。 - 右侧使用
QWidget作为容器,并使用QVBoxLayout进行垂直布局。 - 使用
QStackedWidget创建层叠窗口,用于放置不同的计算窗口。 - 使用
QHBoxLayout创建水平布局,放置关闭按钮。 - 创建
Form1、Form2和Form3窗口,并添加到QStackedWidget中。 - 使用
QObject::connect将QListWidget的currentRowChanged信号连接到QStackedWidget的setCurrentIndex槽函数,实现点击列表选项切换窗口的功能。
注意:
Form1、Form2和Form3窗口需要根据实际需求编写相关代码。- 可以根据需要添加其他功能,例如修改按钮等。
总结:
本示例演示了使用 Qt 的 QSplitter 和 QStackedWidget 组件实现多窗口界面设计的简单方法。通过这种方法,可以方便地构建具有不同功能的窗口,并通过列表控件实现窗口之间的切换。
原文地址: https://www.cveoy.top/t/topic/oLEN 著作权归作者所有。请勿转载和采集!