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中銷毀父對象的時候會自動銷毀子對象。
