大多數複雜的程式,都使用MDI架構,在Qt designer中可以直接将控件MDI Area拖入使用。 QMdiArea一般使用于主視窗中,用于容納多個子視窗QMdiSubWindow ,
注意:QMDIArea不能有視窗部件,隻能有視窗,但是每個子視窗可以視窗部件
UI 屬性
viewMode:視窗模式
tabsClosable:table是否可以删除
tabMovable:table是否可以移動
函數接口介紹
closeAllSubWindows(); //關閉所有子視窗
closeActiveSubWindow();//關閉目前活動視窗
activateNextSubWindow();//激活下一個子視窗
activatePreviousSubWindow();//激活上一個子視窗
執行個體代碼:
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
ui->mdiArea->setTabsClosable(true);
ui->mdiArea->setTabsMovable(true);
// ui->mdiArea->setViewMode(QMdiArea::TabbedView);
ui->mdiArea->setFrameShape(QFrame::WinPanel);
QBrush *mdi_b = new QBrush(QColor(255,255,255)); //設定背景為白色
ui->mdiArea->setBackground(*mdi_b);
//建立視窗2
QMdiSubWindow *subWindow1 = new QMdiSubWindow();
QPushButton * button_1 = new QPushButton(QString("按鈕1"));
subWindow1->setWidget(button_1);
subWindow1->setAttribute(Qt::WA_DeleteOnClose);
subWindow1->setWindowTitle(QString("視窗1"));//設定視窗名字
ui->mdiArea->addSubWindow(subWindow1);
//建立視窗2
QMdiSubWindow *subWindow2 = new QMdiSubWindow();
QPushButton * button_2 = new QPushButton(QString("按鈕2"));
subWindow2->setWidget(button_2);
subWindow2->setAttribute(Qt::WA_DeleteOnClose);
subWindow2->setWindowTitle(QString("視窗1"));//設定視窗名字
ui->mdiArea->addSubWindow(subWindow2);
ui->pushButton->setText(QString("前一個"));
ui->pushButton_2->setText(QString("後一個"));
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(pushButton_Clicked()));
connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(pushButton_2_Clicked()));
ui->mdiArea->setViewMode(QMdiArea::TabbedView);//設定為table模式
}
void Widget::pushButton_Clicked()
{
ui->mdiArea->activatePreviousSubWindow();
}
void Widget::pushButton_2_Clicked()
{
ui->mdiArea->activateNextSubWindow();
}
運作結果: