QT快速學習筆記——介紹窗體

QT中的窗體

在上一節中,我允諾會在本節介紹一個空白組件來作為窗體的“襯底”,也就是所有其他組件的父組件。

這個空白的組件的名字是QWidget,我不知道上一節中我貼出來的QT中類的結構簡圖你有沒有仔細看。假如仔細看過應該會記得QPushButton以及其他所有的可視的窗體組件都是繼承自QWidget的。

這應該很好理解,QWidget是所有可視組件的基類,擁有一個組件的基本屬性——可以設置尺寸、設置標題、設置是否允許最大化及最小化等。

是不是被我説暈了?潛意識裏認定明明只有窗體才擁有標題以及最大最小化這些按鈕,為什麼組件也可以?

這是因為在QT中其實並沒有嚴格意義上的“窗體”,前面兩節中咱們運行的程序展現出的窗體實際上都是組件本身——當一個不存在父組件的組件被調用show方法時,他就會顯示出窗體的外邊框。

下圖是上一節中編寫的程序,他的窗體外邊框(標紅部分)來自不存在父組件的button1對象,而button2對象的父組件是button1,所以button2的窗體外邊框被隱藏了。

簡而言之,QWidget擁有一個組件的基本能力,同時他默認不顯示任何內容也不提供任何功能。

雖然QT中沒有專門作為窗體的東西,但我們完全可以把QWidget這個組件當成純粹的窗體來使用。

改進上一節的程序

非常簡單,我們只需要把button1對象換成一個來自QWidget類的對象就好啦!

#include <QApplication>
#include <QPushButton>
#include <QWidget> // 引入QWidget組件

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    // 實例化一個QWidget對象window
    QWidget *window = new QWidget();
    // 注意這裏將button2的父組件修改為window
    QPushButton *button2 = new QPushButton("Hi", window);

    // 這裏修改要顯示的組件為window
    window->show();

    return a.exec();
}

運行程序

還是很簡陋,但是比上一節中那個兩個按鈕疊羅漢的程序可是好多了哈~

下一節中我將介紹QT組件的方法和屬性,那時我們就可以利用新學的知識再度美化一下界面了。

Leave a Reply

Your email address will not be published. Required fields are marked *

Captcha Code