Qt學習之路2--窗口組件(附帶QLabel使用)及窗口類型

窗口組件

圖形用戶界面由不同的窗口和窗口組件構成
頭文件包含窗口組件,對應Qt中的GUI模塊
Qt以組件對象的方式構建圖形用戶界面,以搭積木的方式將一個界面搭建出來
其中組件的類型包括兩大類:
容器類(父組件):用於包含其他的界面組件。
功能類(子組件):用於實現特定的交互功能。
一個GUI包括許多圖形組件,其中容器組件就是爲了承載別的功能組件,功能組件就是用來提供交互功能的部件,比如上一篇用到的主窗口裏面放入一個按鈕,在這裏主窗口就是一個容器,按鈕就是一個具體的功能部件,當實現點擊信號與槽函數連接後就可以用來描述一定的人機交互功能,信號與槽的機制後面細講,現在只是爲了需要而提一下。
窗口包含很多,其中主窗口、對話框等;而標籤組件、文本框、按鈕組件都屬於功能類組件,一般功能組件都是嵌套在窗口中使用的,一般來說窗口部件叫做功能組件的父組件。注意,Qt中沒有父組件的頂級組件叫做窗口。
這裏寫圖片描述

Qt間的繼承關係

QObject和QPaintDevice是所有Qt類的頂層父類。
QObject類是所有支持Qt對象模型的基類
QPaintDevice類是Qt中所有可繪製組件的基類。
QWidget類繼承自QObject類和QPaintDevice類,它是所有組件類的父類,但是它依然可以生成對象,作爲頂級組件來使用,就是可以作爲其他組件的父組件。
這裏寫圖片描述
其中最後一層的都屬於QWidget組件,其特性如下:
QWidget是Qt中所有窗口組件類的父類。
QWidget可以繪製自己(比如在QLabel上顯示一個字符串)和處理用戶的輸入(比如在QLineEdit中輸入文本)。
QWidget是所有窗口組件的抽象,而QLabel等屬於QWidget的實例,這是由於存在繼承關係而導致的,可以說每個窗口組件都是一個QWidget。
QWidget類對象常作爲父組件和頂級組件使用。
注意:一旦一個組件他沒有了父組件,它將成爲一個窗口,它會擁有窗口所擁有的所有元素,包括標題欄,最大化最小化及關閉按鈕

QLabel組件

功能性組件QLabel用於顯示一個提示性的字符串,一般需要父組件作爲容器,QLable也可以單獨作爲窗口存在,但沒什麼意義(因爲此時整個窗口全是QLabel)。

    QWidget w;
    QLabel l(&w);//生成QLabel對象,讓w成爲其父組件
    l.setText("I'm a label control.");//用於設置提示性字符串
    w.setWindowTitle("Label Test");//設置標題
    w.resize(400, 300);
    w.show();

只有用父組件來包含其他的功能子組件時,程序才能夠構成豐富的圖形界面,用特定的組件來生成一個窗口是沒什麼意義的。

窗口類型

QWidget w(NULL, Qt::Window|Qt::WindowStaysOnTopHint|Qt::WindowContextHelpButtonHint);

QWidget構造函數是可以帶有兩個參數的,用來設置組件的樣式和繼承關係,第一個是父組件參數,作爲頂級組件時參數爲NULL,第二個參數是用來表示窗口類型或窗口標誌,使用按位或操作。
Qt中可以根據設置窗口類型和窗口標誌來定製需要的窗口式樣
窗口類型:Qt::Dialog表示對話框,Qt::Window表示窗口, Qt::SplashScreen可以用來設置啓動界面。
窗口標誌:Qt::WindowStaysOnTopHint用來設置窗口標誌,設置後它將一直顯示在Qt界面的最前面;Qt::WindowContextHelpButtonHint用來改變窗口右上角的樣式(默認是最小化、最大化和關閉)。具體使用可以查看Qt幫助文檔。

小結

Qt以組件對象的方式構建圖形用戶界面,表現在所有圖形用戶界面類繼承自QWidget。
QWidget類是所有用戶界面組件的父類。
QWidget類對象常作爲父組件或頂級組件使用
Qt中可以根據需要定製窗口式樣,定製方式是在定義頂層組件時設置好參數。
QLabel用於顯示一個提示性的字符串提供給用戶。

發佈了109 篇原創文章 · 獲贊 51 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章