(44)使用多文档 MDI 程序设计 QMdiArea 的小例子,以熟悉其使用与成员函数

发布于:2025-07-29 ⋅ 阅读:(20) ⋅ 点赞:(0)

(1)我们以这样的例子,熟悉它的使用 :

在这里插入图片描述

++直接运行一下

在这里插入图片描述

(2)本例子对应的 ui_widget . h 里的源代码如下,这都是 QT 里编译器生成的标准的使用 QMdiArea 的代码 :

class Ui_Widget
{
public:
    QVBoxLayout * verticalLayout; //这是布局里用到的组件
    QPushButton * pushButton;
    QMdiArea    * mdiArea;

    QWidget     * subwindow_3;
    QVBoxLayout * verticalLayout_4;
    QPushButton * pushButton_3;

    QWidget     * subwindow_2;
    QVBoxLayout * verticalLayout_3;
    QPushButton * pushButton_2;

    QWidget     * subwindow_1;
    QVBoxLayout * verticalLayout_2;
    QPushButton * pushButton_1;

    void setupUi(QWidget * Widget)
    {
        if (Widget->objectName().isEmpty())
            Widget->setObjectName(QString::fromUtf8("Widget"));
        Widget->resize(324, 289);
        Widget->setMinimumSize(QSize(50, 10));
        QPalette palette;
        QBrush brush(QColor(85, 85, 127, 255)); //这色关于颜色的是因为捣鼓调色板了,不重要
        brush.setStyle(Qt::SolidPattern);       //不知道如何修改了调色板的哪里
        palette.setBrush(QPalette::Active, QPalette::WindowText, brush);
        QBrush brush1(QColor(240, 240, 240, 255));
        brush1.setStyle(Qt::SolidPattern);
        palette.setBrush(QPalette::Active, QPalette::Window, brush1);
        palette.setBrush(QPalette::Inactive, QPalette::WindowText, brush);
        palette.setBrush(QPalette::Inactive, QPalette::Window, brush1);
        palette.setBrush(QPalette::Disabled, QPalette::Base, brush1);
        palette.setBrush(QPalette::Disabled, QPalette::Window, brush1);
        Widget->setPalette(palette);
        QFont font;
        font.setPointSize(10);
        Widget->setFont(font);
        Widget->setContextMenuPolicy(Qt::CustomContextMenu);
        Widget->setAutoFillBackground(false);
        verticalLayout = new QVBoxLayout(Widget); //主窗体采用垂直布局
        verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));

        pushButton = new QPushButton(Widget);     //主窗体里加入按钮
        pushButton->setObjectName(QString::fromUtf8("pushButton"));
        verticalLayout->addWidget(pushButton);

        mdiArea = new QMdiArea(Widget);           //生成 QMdiArea
        mdiArea->setObjectName(QString::fromUtf8("mdiArea"));

        subwindow_3 = new QWidget();        //生成 QWidget窗体并加入按钮,为 QMdiArea做准备
        subwindow_3->setObjectName(QString::fromUtf8("subwindow_3"));
        verticalLayout_4 = new QVBoxLayout(subwindow_3);
        verticalLayout_4->setObjectName(QString::fromUtf8("verticalLayout_4"));
        pushButton_3 = new QPushButton(subwindow_3);
        pushButton_3->setObjectName(QString::fromUtf8("pushButton_3"));
        verticalLayout_4->addWidget(pushButton_3);
        mdiArea->addSubWindow(subwindow_3); //添加进 QMdiArea

        subwindow_2 = new QWidget();
        subwindow_2->setObjectName(QString::fromUtf8("subwindow_2"));
        verticalLayout_3 = new QVBoxLayout(subwindow_2);
        verticalLayout_3->setObjectName(QString::fromUtf8("verticalLayout_3"));
        pushButton_2 = new QPushButton(subwindow_2);
        pushButton_2->setObjectName(QString::fromUtf8("pushButton_2"));
        verticalLayout_3->addWidget(pushButton_2);
        mdiArea->addSubWindow(subwindow_2); //生成 QWidget并添加进 QMdiArea

        subwindow_1 = new QWidget();
        subwindow_1->setObjectName(QString::fromUtf8("subwindow_1"));
        verticalLayout_2 = new QVBoxLayout(subwindow_1);
        verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2"));
        pushButton_1 = new QPushButton(subwindow_1);
        pushButton_1->setObjectName(QString::fromUtf8("pushButton_1"));
        verticalLayout_2->addWidget(pushButton_1);
        mdiArea->addSubWindow(subwindow_1); //生成 QWidget并添加进 QMdiArea

        verticalLayout->addWidget(mdiArea); //把 QMdiArea添加进主窗体的垂直布局里

        retranslateUi(Widget);

        QMetaObject::connectSlotsByName(Widget); //允许通过名字来连接信号与槽函数
    } // setupUi

    void retranslateUi(QWidget * Widget)
    {
        Widget->setWindowTitle(QCoreApplication::translate("Widget", "H", nullptr));
        pushButton->setText(QCoreApplication::translate("Widget", "PushButton", nullptr));

        subwindow_3->setWindowTitle(QCoreApplication::translate("Widget",
                        "\345\255\220\347\252\227\345\217\243", nullptr));
        pushButton_3->setText      (QCoreApplication::translate("Widget",
                        "\346\214\211\351\222\256_3"          , nullptr));

        subwindow_2->setWindowTitle(QCoreApplication::translate("Widget",
                        "\345\255\220\347\252\227\345\217\243", nullptr));
        pushButton_2->setText      (QCoreApplication::translate("Widget",
                        "\346\214\211\351\222\256_2"          , nullptr));

        subwindow_1->setWindowTitle(QCoreApplication::translate("Widget",
                        "\345\255\220\347\252\227\345\217\243", nullptr));
        pushButton_1->setText      (QCoreApplication::translate("Widget",
                        "\346\214\211\351\222\256_1"          , nullptr));

    } // retranslateUi

};

(3)

谢谢


网站公告

今日签到

点亮在社区的每一天
去签到