QMdiArea

 

1、常用功能函数

Qt全屏显示函数         window.showFullScreen()

Qt最大化显示函数         window.showMaximized()

Qt最小化显示函数         window.showMinimized()

Qt固定尺寸显示函数         window.resize(x,y)

 

 

 

void MainWindow::on_action_21_triggered()
{
    HelpWnd *hw=new HelpWnd(this);
    if(!ui->mdiArea->subWindowList().isEmpty())
    {
        ui->mdiArea->closeAllSubWindows();
    }
    QMdiSubWindow *subWindow = ui->mdiArea->addSubWindow(hw,0);
    subWindow->setWindowTitle(tr("帮助文档"));
    subWindow->showMaximized();
}
2、如何利用QT creator给 QMdiArea 添加背景图片
一.属性设置里将QMdiArea组里的background 下的style设置成no brush    就是不用任何画刷填充颜色
二.利用stylesheet设置background-image或者border-image

前者是平铺方式设置背景,后者是拉伸方式设置背景

 

 

3、遍历QMdiSubWindowlist里的窗口,当新建窗口时可以保证实例的唯一性,用子窗口的windowtitle作为判断标志。 

 

void MainWindow::on_action_21_triggered()
{
    bool flags=false;
    if(ui->mdiArea->subWindowList().isEmpty())
    {
        HelpWnd *hw = new HelpWnd(this);
        QMdiSubWindow *subWindow = ui->mdiArea->addSubWindow(hw,0);
        subWindow->setWindowTitle(tr("帮助文档"));
        subWindow->showMaximized();
    }
    else
    {
        for(int i=0;i<ui->mdiArea->subWindowList().size();i++)
        {
            if(tr("帮助文档")==ui->mdiArea->subWindowList().at(i)->windowTitle())
            {
                ui->mdiArea->subWindowList().at(i)->showMaximized();
                flags=true;
            }
        }
        if(flags==false)
        {
            HelpWnd *hw = new HelpWnd(this);
            QMdiSubWindow *subWindow = ui->mdiArea->addSubWindow(hw,0);
            subWindow->setWindowTitle(tr("帮助文档"));
            subWindow->showMaximized();
        }
    }
}

 

4、在一个QMainWindow中建立一个QMdiArea的例子

 

VS中建立一个QMainWindow项目,通过ui会自动生成一段代码ui_xxx.h,我们以后就可以使用多文档界面了。

 

/********************************************************************************
** Form generated from reading UI file 'MainWindow.ui'
**
** Created: Thu Feb 16 19:10:50 2012
**      by: Qt User Interface Compiler version 4.7.4
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QHeaderView>
#include <QtGui/QMainWindow>
#include <QtGui/QMdiArea>
#include <QtGui/QMenuBar>
#include <QtGui/QStatusBar>
#include <QtGui/QToolBar>
#include <QtGui/QWidget>

QT_BEGIN_NAMESPACE

class Ui_MainWindowClass
{
public:
    QWidget *centralWidget;
    QMdiArea *mdiArea;
    QMenuBar *menuBar;
    QToolBar *mainToolBar;
    QStatusBar *statusBar;

    void setupUi(QMainWindow *MainWindowClass)
    {
        if (MainWindowClass->objectName().isEmpty())
            MainWindowClass->setObjectName(QString::fromUtf8("MainWindowClass"));
        MainWindowClass->resize(761, 593);
        MainWindowClass->setMinimumSize(QSize(0, 0));
        centralWidget = new QWidget(MainWindowClass);
        centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
        mdiArea = new QMdiArea(centralWidget);
        mdiArea->setObjectName(QString::fromUtf8("mdiArea"));
        mdiArea->setGeometry(QRect(30, 40, 560, 350));
        MainWindowClass->setCentralWidget(centralWidget);
        menuBar = new QMenuBar(MainWindowClass);
        menuBar->setObjectName(QString::fromUtf8("menuBar"));
        menuBar->setGeometry(QRect(0, 0, 761, 23));
        MainWindowClass->setMenuBar(menuBar);
        mainToolBar = new QToolBar(MainWindowClass);
        mainToolBar->setObjectName(QString::fromUtf8("mainToolBar"));
        MainWindowClass->addToolBar(Qt::TopToolBarArea, mainToolBar);
        statusBar = new QStatusBar(MainWindowClass);
        statusBar->setObjectName(QString::fromUtf8("statusBar"));
        MainWindowClass->setStatusBar(statusBar);

        retranslateUi(MainWindowClass);

        QMetaObject::connectSlotsByName(MainWindowClass);
    } // setupUi

    void retranslateUi(QMainWindow *MainWindowClass)
    {
        MainWindowClass->setWindowTitle(QApplication::translate("MainWindowClass", "PET/CT\346\216\247\345\210\266\345\217\260", 0, QApplication::UnicodeUTF8));
    } // retranslateUi

};

namespace Ui {
    class MainWindowClass: public Ui_MainWindowClass {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_MAINWINDOW_H

你可能感兴趣的:(qt,多文档界面,QMdiArea)