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

(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)

谢谢

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangzhangkeji

谢谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值