Qt窗口部件及子部件


QWidget類是所有用戶界面對象的基類,被稱為基礎窗口部件。

#include <QApplication>
#include<QLabel>
#include<QWidget>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

        // 新建QWidget類對象,默認parent參數是0,所以它是個窗口
        QWidget *widget = new QWidget();

        // 設置窗口標題
        widget->setWindowTitle(QObject::tr("我是widget"));

        // 新建QLabel對象,默認parent參數是0,所以它是個窗口
        QLabel *label = new QLabel();

        label->setWindowTitle(QObject::tr("我是label"));

        // 設置要顯示的信息
        label->setText(QObject::tr("label:我是個窗口"));

        // 改變部件大小,以便能顯示出完整的內容
        label->resize(180, 20);

        // label2指定了父窗口為widget,所以不是窗口
        QLabel *label2 = new QLabel(widget);

        label2->setText(QObject::tr("label2:我不是獨立窗口,只是widget的子部件"));

        label2->resize(250, 20);

        // 在屏幕上顯示出來
        label->show();
        widget->show();

    return a.exec();
}

 1. Qt中把沒有嵌入到其他部件中的部件稱為窗口,一般窗口都有邊框和標題欄,就像程序中的widget和label一樣。窗口就是沒有父部件的部件,所有又稱為頂級部件.與其相對的是非窗口部件,又稱為子部件.

    2.針對於以上這種簡單的說法有弊端,如:QDialog為窗口是毋庸置疑的吧,但是在使用對話框時為其指定父窗口也是在正常不過了;

  3.本人所看書上最后還有兩句代碼delete label; delete widget;,但是添上這兩句后運行結果會在后台顯示,不會出現在桌面上;   

  4.程序中程序中label沒有父窗口,而label2在widget中,widget是其父窗口。程序中使用new為label2分配了空間,但是並沒有使用delete進行釋放,這是因為在Qt中銷毀父對象的時候會自動銷毀子對象。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM