本文详细的介绍了QMdiArea控件的各种操作,例如:新建界面、源代码、添加界面、移除一个子窗口、设置活动子窗口、子窗口级联排列、子窗口平铺排列、关闭当前子窗口、关闭当前子窗口、返回当前子窗口、返回当前子窗口、返回子窗口列表、信号槽、单击信号、其它文章等等操作。
实际开发中,一个界面上可能包含十几个控件,手动调整它们的位置既费时又费力。QMdiArea(Multiple Document Interface Area)提供了一个可以同时显示多个文档窗口的区域。
本系列QT全面详解文章目前共有三十五篇,本系列文章较为详细的讲述了QT控件的基础操作和使用,也谢谢大家的关注、点赞、收藏。
本文作者原创,转载请附上文章出处与本文链接。
QT QMdiArea控件 使用详解目录
1 新建界面
2 源代码
3 添加界面
4 移除一个子窗口
5 设置活动子窗口
6 子窗口级联排列
7 子窗口平铺排列
8 关闭当前子窗口
9 关闭所有子窗口
10 返回当前子窗口
11 返回当前子窗口
12 返回子窗口列表
13 信号槽
14 单击信号
15 其它文章
1 新建界面
2 源代码
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDebug>
#include <QTextEdit>
#include <QMdiSubWindow>
//加入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
3 添加界面
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);
4 移除一个子窗口
//从QMdiArea中移除一个子窗口,但不删除它。
ui->mdiArea->removeSubWindow(subWindow1);
5 设置活动子窗口
//设置当前活动的子窗口。
ui->mdiArea->setActiveSubWindow(subWindow2);
6 子窗口级联排列
//将子窗口以级联的方式排列。
ui->mdiArea->cascadeSubWindows();
7 子窗口平铺排列
//将子窗口以平铺的方式排列。
ui->mdiArea->tileSubWindows();
8 关闭当前子窗口
//关闭当前活动的子窗口。
ui->mdiArea->closeActiveSubWindow();
9 关闭所有子窗口
//关闭所有的子窗口。
//ui->mdiArea->closeAllSubWindows();
10 返回当前子窗口
//返回当前活动的子窗口
ui->mdiArea->activeSubWindow(); //QMdiSubWindow*
11 返回当前子窗口
//返回当前的子窗口
ui->mdiArea->currentSubWindow();//QMdiSubWindow*
12 返回子窗口列表
//返回子窗口的列表
ui->mdiArea->subWindowList(); //QList<QMdiSubWindow *>
13 信号槽
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 {
// 当没有活动的子窗口时的处理逻辑
}
}
14 单击信号
//void mousePressEvent(QMouseEvent *event) override
//{
// if (event->button() == Qt::LeftButton) {
// QMdiSubWindow *subWindow = subWindowAt(event->pos());
// if (subWindow) {
// // 处理单击窗口事件
// }
// }
// QMdiArea::mousePressEvent(event);
//}
15 其它文章
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博客
QT QToolBox控件使用详解_双子座断点的博客-CSDN博客
QT QFrame控件使用详解_双子座断点的博客-CSDN博客