QT QMdiArea控件 使用详解

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

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

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

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

QT QMdiArea控件 使用详解目录

1 新建界面

2 源代码

3 添加界面

4 移除一个子窗口

5 设置活动子窗口

扫描二维码关注公众号,回复: 16751626 查看本文章

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

猜你喜欢

转载自blog.csdn.net/qq_37529913/article/details/132706110