天天看點

【QT】QT視窗部件

QT視窗部件

預設部件基類

QT提供的預設部件基類包括QMainWindow、QWidget、和QDialog,這三個部件基類也是用的最多的。

QMainWindow是帶有菜單欄、工具欄、狀态欄的主視窗類,它有自己單獨的布局。布局有一個中心區域,通常是标準的QT部件,也可以是定制的部件,且必須有一個中心小部件。setCentralWidget()方法可設定中心部件。

QWidget類是所有部件對象的基類,被稱為基礎視窗部件。

QWidget提供自我繪制和處理使用者輸入等基本功能,如接收滑鼠、鍵盤和其他事件,并且在螢幕上繪制自己的表現。每一個視窗部件都是矩形的,并且它們是按照**Z軸(由螢幕裡到螢幕外)**順序排列的。一個視窗部件可以被它的父視窗部件或者它前面的視窗部件蓋住一部分。一個沒有父視窗部件的視窗部件一直是頂級視窗部件。非頂級視窗部件時父視窗的子部件。

QWidget構造函數有兩個參數:QWidget*parent = 0,QT:WindowFlages f = 0。

parent即父視窗,預設為0,即沒有父視窗,是頂級視窗,如果指定parent值,則目前窗體将會是一個子部件。QT:WindowFlags是QT:WindowType,枚舉值的組合,用來設定視窗的屬性,f=0表示預設為QT:Widget風格,setWindowState()可設定窗體的狀态,參數由QT:WindowStates枚舉值指定。

QWidget類關系表

【QT】QT視窗部件

窗體狀态

【QT】QT視窗部件

模态

視窗間的阻塞情況,是否必須先關閉某一視窗之後,才能對另一個視窗進行操作。

被設定為模态視窗的視窗關閉之後才能對其他視窗進行操作。

QDialog是各種對話框的基類,其繼承自QWidget,對話框有兩種表現形态:形态對話框、非模态對話框。模态對話框就是一個阻塞同一應用程式中其它可視視窗的輸入對話框。使用者必須完成目前對話框中的互動操作并且關閉視窗後才能操作目前音樂程式中的其它視窗。模式對話框有它們自己的本地事件循環。exec()方法可使視窗以模态方式運作。當使用者關閉這個對話框,exec()将提供一個可用的傳回值并且這時流程控制繼續從調用exec()的地方進行。

通常,我們連結預設按鈕,例如"OK"到accpet()槽并且把"Cancel"連結到reject()槽,來使對話框關閉并且傳回适當的值。另外,我們也可以連接配接done()槽,傳遞給它Accepted或Rejected。

模态視窗運作

(1)調用exec()方法,如
QDialog dlg;
dlg.exec();
(2)調用setModal()方法設定模态,如
QDialog dlg;
dlg.setModal(true);
dlg.show();
(3)QWidget widget;
widget.setWindowModality(Qt::ApplicationModal);         
widget.show();      
【QT】QT視窗部件

其他部件

QLabel

常用來顯示文本、文字、圖檔、gif動圖。

可與其他部件設定夥伴關系,此時标簽起到快捷鍵作用。

QLineEdit

接收使用者輸入。

可以增加限制條件,例如隻能讓使用者輸入什麼。

掩碼字元

【QT】QT視窗部件

QPushButton

按鈕類,常用顯示文字圖示。

QRadioButton

單選按鈕類,隻能選一個,将單選框按鈕加入一個分組框中時,加入的按鈕是一個分組,分組中隻能選中一個,具有排他性。

QCheckBox

繼續閱讀