在 QMainWindow 中所示範的是SDI(Single Document Interface)視窗介面,每個開啟的文件佔據一個視窗,SDI介面主要適用所有工作都在同一個文件中進行的情況。
有的視窗程式會使用MDI(Multiple Document
Interface)介面,每個開啟的文件都在同一個視窗之中成為一個子視窗,MDI主要適用於完成一個工作,需要從多個文件來組合的情況,例如影像處理
軟體多使用MDI介面,因為影像合成通常需要多個影像文件來組合。
在Qt中要製作MDI介面的視窗,是使用 QMainWindow,並將其中心元件(Central Widget)設為QMdiArea實例,而每一個MDI子視窗,則使用QMdiArea的addSubWindow()來加入。
下面這個程式以 QMainWindow 中的程式為基礎,使用QMdiArea修改為MDI介面,當中會有兩個MDI子視窗:
#include <QApplication> #include <QMdiArea> #include <QMainWindow> #include <QTextEdit> #include <QMenuBar> #include <QAction> #include <QToolBar> #include <QStatusBar> #include <QDockWidget> #include <QLabel> #include <QPixmap>
int main(int argc, char *argv[]) { QApplication app(argc, argv); QMainWindow *mainWindow = new QMainWindow; mainWindow->setWindowTitle("QMainWindow"); QMdiArea *mdiArea = new QMdiArea; mainWindow->setCentralWidget(mdiArea); // 文字編輯區 QTextEdit *textEdit = new QTextEdit; textEdit->setWindowTitle("File1"); mdiArea->addSubWindow(textEdit); textEdit = new QTextEdit; textEdit->setWindowTitle("File2"); mdiArea->addSubWindow(textEdit); // 蹦現選單 // 餘下程式相同....
return app.exec(); }
下圖為執行時的參考畫面:

|
|