QT QMdiArea控件 使用详解

        本文详细的介绍了QMdiArea控件的各种操作,例如:新建界面、源代码、添加界面、移除一个子窗口、设置活动子窗口、子窗口级联排列、子窗口平铺排列、关闭当前子窗口、关闭当前子窗口、返回当前子窗口、返回当前子窗口、返回子窗口列表、信号槽、单击信号、其它文章等等操作。

        实际开发中,一个界面上可能包含十几个控件,手动调整它们的位置既费时又费力。QMdiArea(Multiple Document Interface Area)提供了一个可以同时显示多个文档窗口的区域。

        本系列QT全面详解文章目前共有三十五篇,本系列文章较为详细的讲述了QT控件的基础操作和使用,也谢谢大家的关注、点赞、收藏。

QT QMdiArea控件 使用详解_第1张图片

 本文作者原创,转载请附上文章出处与本文链接。

QT QMdiArea控件 使用详解目录

1 新建界面

2 源代码

3 添加界面

4 移除一个子窗口

5 设置活动子窗口

6 子窗口级联排列

7 子窗口平铺排列

8 关闭当前子窗口

9 关闭所有子窗口

10 返回当前子窗口

11 返回当前子窗口

12 返回子窗口列表

13 信号槽

14 单击信号

15 其它文章


1 新建界面

QT QMdiArea控件 使用详解_第2张图片

2 源代码

#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

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

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博客

你可能感兴趣的:(QT控件使用详解,qt,开发语言)