本文详细的介绍了QMdiArea控件的各种操作,例如:新建界面、源代码、添加界面、移除一个子窗口、设置活动子窗口、子窗口级联排列、子窗口平铺排列、关闭当前子窗口、关闭当前子窗口、返回当前子窗口、返回当前子窗口、返回子窗口列表、信号槽、单击信号、其它文章等等操作。
实际开发中,一个界面上可能包含十几个控件,手动调整它们的位置既费时又费力。QMdiArea(Multiple Document Interface Area)提供了一个可以同时显示多个文档窗口的区域。
本系列QT全面详解文章目前共有三十五篇,本系列文章较为详细的讲述了QT控件的基础操作和使用,也谢谢大家的关注、点赞、收藏。

本文作者原创,转载请附上文章出处与本文链接。
QT QMdiArea控件 使用详解目录

- #ifndef MAINWINDOW_H
- #define MAINWINDOW_H
-
- #include
- #include
- #include
- #include
-
- //加入GBK申明,否则中文乱码 全局使用GBK文件操作因为有中文所以使用
- #pragma execution_character_set("utf-8")
- QT_BEGIN_NAMESPACE
- namespace Ui { class MainWindow; }
- QT_END_NAMESPACE
-
- class MainWindow : public QMainWindow
- {
- Q_OBJECT
-
- public:
- MainWindow(QWidget *parent = nullptr);
- ~MainWindow();
- private slots:
- void subWindowAct(QMdiSubWindow* subWindow);
-
- private:
- Ui::MainWindow *ui;
-
- QString Title;
- QString Version;
- QString BlogText;
-
- QMdiSubWindow* subWindow1;
- QMdiSubWindow* subWindow2;
- QMdiSubWindow* subWindow3;
-
- };
- #endif // MAINWINDOW_H
- subWindow1 = new QMdiSubWindow;
- subWindow2 = new QMdiSubWindow;
- subWindow3 = new QMdiSubWindow;
-
- subWindow1->setWidget(new QTextEdit(QString("This is window 1")));
- subWindow2->setWidget(new QTextEdit(QString("This is window 2")));
- subWindow3->setWidget(new QTextEdit(QString("This is window 3")));
-
-
- ui->mdiArea->addSubWindow(subWindow1);
- ui->mdiArea->addSubWindow(subWindow2);
- ui->mdiArea->addSubWindow(subWindow3);
- //从QMdiArea中移除一个子窗口,但不删除它。
- ui->mdiArea->removeSubWindow(subWindow1);
- //设置当前活动的子窗口。
- ui->mdiArea->setActiveSubWindow(subWindow2);
- //将子窗口以级联的方式排列。
- ui->mdiArea->cascadeSubWindows();
- //将子窗口以平铺的方式排列。
- ui->mdiArea->tileSubWindows();
- //关闭当前活动的子窗口。
- ui->mdiArea->closeActiveSubWindow();
- //关闭所有的子窗口。
- //ui->mdiArea->closeAllSubWindows();
- //返回当前活动的子窗口
- ui->mdiArea->activeSubWindow(); //QMdiSubWindow*
- //返回当前的子窗口
- ui->mdiArea->currentSubWindow();//QMdiSubWindow*
- //返回子窗口的列表
- ui->mdiArea->subWindowList(); //QList
- QObject::connect(ui->mdiArea, &QMdiArea::subWindowActivated, this, &MainWindow::subWindowAct);
-
- void MainWindow::subWindowAct(QMdiSubWindow* subWindow)
- {
- if (subWindow) {
- // 获取活动的子窗口的指针subWindow,并进行相应的操作
- // 例如,可以获取子窗口的标题、内容等信息
- QString windowTitle = subWindow->windowTitle(); qDebug() << "子窗口标题:" << windowTitle;
- QWidget *windowContent = subWindow->widget(); qDebug() << "子窗口内容:" << windowTitle;
- } else {
- // 当没有活动的子窗口时的处理逻辑
- }
- }
- //void mousePressEvent(QMouseEvent *event) override
- //{
- // if (event->button() == Qt::LeftButton) {
- // QMdiSubWindow *subWindow = subWindowAt(event->pos());
- // if (subWindow) {
- // // 处理单击窗口事件
- // }
- // }
- // QMdiArea::mousePressEvent(event);
- //}
QT TextEdit控件_双子座断点的博客-CSDN博客_qt textedit
QT QComboBox使用详解_双子座断点的博客-CSDN博客
QT QtableView操作详解_双子座断点的博客-CSDN博客_qtableview增删改查
Qt QStandardItemModel(1.超级详细用法)_双子座断点的博客-CSDN博客_qstandardmodel
Qt QStandardItemModel(2.超级详细函数)_双子座断点的博客-CSDN博客_qstandarditemmodel点击事件
QT QRadioButton使用详解_双子座断点的博客-CSDN博客_qt radiobutton
QT QLineEdit使用详解_双子座断点的博客-CSDN博客_qt qlineedit
Qt QMessageBox使用详解_双子座断点的博客-CSDN博客_qt message
QChart折线图、饼状图、条形图、曲线图_双子座断点的博客-CSDN博客_qchart样式
QChart属性详解_双子座断点的博客-CSDN博客_setanimationoptions
QCharts QValueAxis使用_双子座断点的博客-CSDN博客_qvalueaxis
Qt 5 等待提示框(开源 动态图)_双子座断点的博客-CSDN博客_qt 等待对话框
QtDataVisualization 数据3D可视化_双子座断点的博客-CSDN博客_qtdatavisualizatio
QT QSpinBox 整数计数器控件 使用详解_双子座断点的博客-CSDN博客
QT QDoubleSpinBox 浮点计数器控件(使用详解)_双子座断点的博客-CSDN博客_qdoublespinbox信号槽
QT QSlider、QHorizontalSlider、QVerticalSlider 控件 使用详解_双子座断点的博客-CSDN博客_qslider设置步长
QT QTabWidget 控件 使用详解_双子座断点的博客-CSDN博客
QT QCalendarWidget控件 使用详解_双子座断点的博客-CSDN博客
QT QStackedWidget 控件 使用详解_双子座断点的博客-CSDN博客
QT QVBoxLayout 垂直布局控件_双子座断点的博客-CSDN博客
QT QHBoxLayout 水平布局控件_双子座断点的博客-CSDN博客
QT QGridLayout网格布局控件_双子座断点的博客-CSDN博客
QT QVerticalSpacer 弹簧控件_双子座断点的博客-CSDN博客
QT QHorizontalSpacer弹簧控件_双子座断点的博客-CSDN博客
QT QLine 使用详解_双子座断点的博客-CSDN博客
QT QFontComboBox 使用详解_双子座断点的博客-CSDN博客
QT QScrollArea控件 使用详解_双子座断点的博客-CSDN博客