?一、前言
????????QMdiArea類繼承于QAbstractScrollArea,QAbstractScrollArea繼承于QFrame,是Qt用來顯示MDI窗口的部件。
?????? 滾屏區域基類 QAbstractScrollAreahttps://blog.csdn.net/u014491932/article/details/132245486
?????? 框架類 QFramehttps://blog.csdn.net/u014491932/article/details/132188655
?????????QMdiArea部件提供了一個顯示MDI(Multiple Document Interface)多文檔窗口。子窗口使用QMdiSubWindow管理,QMdiSubWindow繼承于QWidget,所以它除了擁有頂級窗口的屬性,還擁有自身的行為,比如按鍵移動窗口等。
二、QMdiArea類
1、activationOrder
????? 該屬性保存子窗口列表的排序標準。默認情況下,它是窗口創建順序。使用subWindowList()返回的子窗口列表的排序。
QMdiArea::WindowOrder activationOrder() const
void setActivationOrder(QMdiArea::WindowOrder order)
定義 描述 QMdiArea::CreationOrder 窗口按照創建的順序返回。 QMdiArea::StackingOrder 窗口按照它們的堆疊順序返回,最上面的窗口是列表中的最后一個 QMdiArea::ActivationHistoryOrder 窗口按照它們被激活的順序返回
2、background
????????該屬性保存工作區的背景刷子,默認情況下,它是灰色,但可以是任何刷子(例如,顏色,漸變或像素圖)。
QBrush background() const
void setBackground(const QBrush &background)
3、viewMode
??????? 該屬性表示二級界面的顯示方式,默認為QMdiArea::SubWindowView。
QMdiArea::ViewMode viewMode() const
void setViewMode(QMdiArea::ViewMode mode)
定義 描述 QMdiArea::SubWindowView 顯示帶有窗口框架的子窗口 QMdiArea::TabbedView 帶有選項卡的窗口
?
????????選項卡窗口QTabWidgethttps://blog.csdn.net/u014491932/article/details/132311737
4、documentMode
????????該屬性用于在選項卡視圖模式下選項卡欄是否設置為文檔模式,默認禁用。這與macOS上的文檔模式相同。啟用時,不會呈現選項卡部件框架,即選項卡頁面和其后的窗口等頁面無框架區分看起來是一個整體。此模式對于頁面需要顯示文檔類型的情況非常有用,因為節省了選項卡部件框架占用的部分空間。
bool documentMode() const
void setDocumentMode(bool enabled)
5、tabPosition
????????該屬性表示選項卡視圖模式中選項卡的位置。
QTabWidget::TabPosition tabPosition() const
void setTabPosition(QTabWidget::TabPosition position)
6、tabShape
??????? 該屬性表示選項卡視圖模式中選項卡的形狀。
QTabWidget::TabShape tabShape() const
void setTabShape(QTabWidget::TabShape shape)
7、tabsClosable
????????該屬性表示選項卡視圖模式中選項卡欄是否應該在每個選項卡上放置關閉按鈕。
bool tabsClosable() const
void setTabsClosable(bool closable)
8、tabsMovable
????????該屬性表示選項卡視圖模式中用戶是否可以移動選項卡區域內的選項卡,默認選項卡是不可移動的。
bool tabsMovable() const
void setTabsMovable(bool movable)
9、公共方法
1)addSubWindow
??????? 使用addSubWindow添加小部件到MDI區域,如果希望在MDI區域關閉窗口時刪除窗口,則必須設置Qt::WA_DeleteOnClose小部件屬性,否則隱藏。
QMdiSubWindow *addSubWindow(QWidget *widget, Qt::WindowFlags windowFlags = Qt::WindowFlags())
????????示例:
QMdiArea mdiArea;
QMdiSubWindow *subWindow1 = new QMdiSubWindow;
subWindow1->setWidget(internalWidget1);
subWindow1->setAttribute(Qt::WA_DeleteOnClose);
mdiArea.addSubWindow(subWindow1);
2)activeSubWindow
??????? 返回當前活動的子窗口,沒有則返回nullptr。
QMdiSubWindow *activeSubWindow() const
3)currentSubWindow
????????返回指向當前子窗口的指針,如果沒有則返回nullptr。如果包含QMdiArea的QApplication是活動的,這個函數將返回與activeSubWindow()相同的結果。
QMdiSubWindow *currentSubWindow() const
4)removeSubWindow
??????? 移除MdiSubWindows或者內部小部件。
void removeSubWindow(QWidget *widget)
5)setOption/testOption
??????? 設置返回一些MDI行為的使能。
bool testOption(QMdiArea::AreaOption option) const
void setOption(QMdiArea::AreaOption option, bool on = true)
定義 描述 QMdiArea::DontMaximizeSubWindowOnActivation 當活動子窗口最大化時,默認行為是最大化下一個激活的子窗口
6)subWindowList
????????返回MDI區域中所有子窗口的列表,activationOrder屬性決定返回的順序。
QList<QMdiSubWindow *> subWindowList(QMdiArea::WindowOrder order = CreationOrder) const
10、信號
1)subWindowActivated
??????? 窗口被激活后時觸發。
void subWindowActivated(QMdiSubWindow *window)
三、QMdiSubWindow類
1、keyboardPageStep
????????設置使用鍵盤頁面鍵時小部件應該移動距離。默認的鍵盤頁步長值是20像素。????????
int keyboardPageStep() const
void setKeyboardPageStep(int step)
2、keyboardSingleStep
????????設置使用鍵盤箭頭鍵時小部件應該移動距離。默認的鍵盤單步值是5像素。
int keyboardSingleStep() const
void setKeyboardSingleStep(int step)
3、公共方法
1)isShaded
?????? 獲取窗口是否為陰影,如果窗口被折疊,只有標題欄可見,則顯示為陰影。
bool isShaded() const
2)showShaded
?????? 調用此函數使子窗口進入陰影模式。
void showShaded()
3)mdiArea
??????? 返回持有mdiSbuWindow的mdiArea指針。
QMdiArea *mdiArea() const
4)setOption
????????設置子窗口行為的使能。????????
void setOption(QMdiSubWindow::SubWindowOption option, bool on = true)
5)testOption
??????? 返回子窗口行為的使能。???
bool testOption(QMdiSubWindow::SubWindowOption option) const
定義 QMdiSubWindow::RubberBandResize 啟用后,用戶可調整子窗口大小,QResizeEvent事件觸發,默認該選項是禁用的。 QMdiSubWindow::RubberBandMove 啟用后,用戶可移動子窗口位置,QMoveEvent事件觸發,默認該選項是禁用的。
6)systemMenu
??????? 獲取子窗口的當前系統菜單。
QMenu *systemMenu() const
7)setSystemMenu
????????設置子窗口的當前系統菜單。
void setSystemMenu(QMenu *systemMenu)
8)showSystemMenu
??????? 顯示子窗口的當前系統菜單。
void showSystemMenu()
9)setWidget
?????? 獲取子窗口的內部小部件。
QWidget *widget() const
10)setWidget
?????? 設置子窗口的內部小部件。內部小部件顯示在標題欄下方的子窗口中央。
void setWidget(QWidget *widget)
4、信號
1)aboutToActivate
??????? 子窗口被激活發出此信號,QMdiArea也將發出subWindowActivated()信號。
void aboutToActivate()
2)windowStateChanged
????????QMdiSubWindow在窗口狀態改變后發出這個信號。
void windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState)