主視窗 07 類 QMdiArea 官翻

2021-10-18 22:48:15 字數 4416 閱讀 5603

屬性公共函式

重寫的公共函式

公共槽訊號

重寫的受保護的函式

受保護的槽

演示**

qmdiarea小部件提供了乙個顯示mdi視窗的區域。

qmdiarea的功能本質上類似於mdi視窗的視窗管理器。例如,它繪製自己管理的視窗,並以層疊或平鋪模式排列它們。

qmdiarea通常用作qmainwindow中建立mdi應用程式的中心小部件,但也可以放置在任何布局中。以下**將區域新增到主視窗:

qmainwindow *mainwindow =

new qmainwindow;

mainwindow-

>

setcentralwidget

(mdiarea)

;

與頂級視窗的視窗管理器不同,qmdiarea支援所有視窗標誌(qt::windowflags),只要當前小部件樣式支援這些標誌。如果樣式不支援特定標誌(例如windowshadebuttonhint),則仍可以使用showshaded() 對視窗進行著色。

qmdiarea中的子視窗是qmdisubwindows的例項。它們通過addsubwindow() 新增到mdi區域。將qwidget(設定為內部小部件)傳遞給此函式是常見的,但也可以傳遞qmdisubwindows 直接。那類繼承qwidget,程式設計時可以使用與普通頂級視窗相同的api。qmdisubwindows 還具有特定於mdi視窗的行為。有關更多詳細資訊,請參見qmdisubwindows類描述。

子視窗在獲得鍵盤焦點或呼叫setfocus() 時變為活動狀態。使用者通過以通常的方式移動焦點來啟用視窗。當活動視窗更改時,mdi區域發出subwindowactivated() 訊號,activesubwindow() 函式返回活動子視窗。

便利函式subwindowlist() 返回所有子視窗的列表。例如,可以在包含視窗列表的彈出選單中使用此資訊。

子視窗按當前 windoworder 排序。用於subwindowlist() 和 activatenextsubwindow() 以及activateprevioussubwindow() 。此外,在使用cascadesubwindows() 和 tilesubwindows() 層疊或平鋪視窗時也會使用它。

qmdiarea為子視窗提供了兩種內建的布局策略:cascadesubwindows() 和tilesubwindows() 。兩者都是插槽,很容易連線到選單項。

注意:qmdiarea的預設滾動條屬性是qt::scrollbaralwaysoff。

flags areaoptions

此列舉描述自定義qmdiarea行為的選項。

constant

value

description

qmdiarea::dontmaximizesubwindowonactivation

0x1當啟用的子視窗最大化時,預設行為是最大化啟用的下乙個子視窗。如果不希望此行為,請設定此選項。

此列舉描述區域的檢視模式,即如何顯示子視窗。

constant

value

description

qmdiarea::subwindowview

0顯示帶有窗框的子視窗(預設設定)。

qmdiarea::tabbedview

1在選項卡欄中顯示帶有選項卡的子視窗。

指定用於對subwindowlist() 返回的子視窗列表排序的條件。排列視窗時,函式cascadesubwindows() 和tilesubwindows() 遵循以下順序。

constant

value

description

qmdiarea::creationorder

0視窗按建立順序返回。

qmdiarea::stackingorder

1視窗按堆疊順序返回,最上面的視窗是列表中的最後乙個視窗。

qmdiarea::activationhistoryorder

2視窗按啟用順序返回。

activationorder: windoworder 子視窗列表的排序條件

此屬性指定subwindowlist()返回的子視窗列表的排序條件。預設情況下,它是視窗建立順序。

background: qbrush 工作區的背景筆刷

此屬性為工作區本身設定背景筆刷。預設情況下,它是灰色,但可以是任何筆刷(例如,顏色、漸變或畫素貼圖)。

documentmode: bool 選項卡欄在選項卡式檢視模式下是否設定為文件模式

預設情況下禁用文件模式。

tabposition: qtabwidget::tabposition 選項卡式檢視模式中選項卡的位置

此屬性的可能值由qtabwidget::tabposition列舉描述。

tabshape: qtabwidget::tabshape 選項卡式檢視模式中選項卡的形狀

此屬性的可能值為qtabwidget::rounded(預設值)或qtabwidget::triangal。

tabsclosable: bool 選項卡欄是否應在選項卡式檢視模式下的每個選項卡上放置關閉按鈕

預設情況下,選項卡不可關閉。

tabsmovable: bool 是否可以在選項卡式檢視模式下移動選項卡欄區域中的選項卡

預設情況下,選項卡不可移動。

viewmode: viewmode 子視窗在qmdiarea中的顯示方式

預設情況下,子視窗檢視用於顯示子視窗。

#include

#define widgettype qmdiarea

int i=

0,j=0;

qlist< widgettype *

> widgetlist;

qlist< qlabel *

> labellist;

void

addframe

( qwidget *parent)

qlabel *label =

newqlabel

(parent);;

auto

*frame =

newqframe

(parent)

; frame-

>setframestyle (qframe::panel | qframe::plain)

;auto

*vbox =

newqvboxlayout

(frame)

; vbox-

>addwidget (label,qt::aligncenter)

; vbox-

>addwidget (widget,qt::aligncenter)

; vbox-

>setstretch (0,

0); vbox-

>setstretch (1,

1); mainlayout-

>addwidget (frame,i,j)

; j++;}

void

setlabeltext

(int i,qstring text)

qlabel *label = labellist.at (i)

; label-

>settext (text);}

widgettype*

getwidget

(int i)

return widgetlist.at (i);}

intmain

(int argc,

char

*ar**)

主視窗型別

主視窗型別 有三種視窗 qmainwindow qwidget qdialog qmainwindow 可以包含選單欄 工具欄 狀態列和標題欄,是最常見的視窗形式。qdialog 是對話視窗的基類。沒有選單欄 工具欄 狀態列。qwidget 不確定視窗的用途就使用qwidget。import sys...

C 登入視窗與主視窗

程式入口 using system using system.collections.generic using system.windows.forms namespace huiyi 主視窗的 using system using system.collections.generic using...

自定義類獲取主視窗控制項引用

我想要在自定義類中獲取主視窗的控制項imagelist1。好了 我就直接在自定義類建構函式中這樣寫到 public class class1 自認為能夠成功的訪問到了,結構報錯啦。好吧 我們來看看在主視窗中我拖進去的imagelist1控制項的宣告定義,是私有的啊 private system.wi...