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