區分窗口部件和子部件
窗口部件:沒有父部件的部件,也稱爲頂部件。
子部件:嵌入在窗口的部件。
#include<QtWidgets>
int main(int argc,char *argv[])
{
QApplication a(argc,argv);
QWidget *widget=new QWidget();
widget->setWindowTitle(QObject::tr("我是widget"));
QLabel *label=new QLabel();
label->setWindowTitle(QObject::tr("我是label"));
label->setText(QObject::tr("label:我是個窗口"));
label->resize(180,20);
QLabel *label2= new QLabel(widget);
label2->setText(QObject::tr("label2:我不是獨立窗口,只是widget的字部件"));
label2->resize(250,20);
label->show();
widget->show();
int ret=a.exec();
delete label;
delete widget;
return ret;
}
運行結果:
其中widget、label爲窗口,label2爲子部件。因爲在程序中定義了一個QWidget類對象的指針widget和兩個QLabel對象指針label與label2,其中label沒有父窗口(沒有父窗口就是窗口),而label2在widget中,widget是其父窗口。
注意:代碼中使用new操作符爲label2分配了空間,但是並沒有使用delete釋放,是因爲Qt中銷燬父對象的時候會自動銷燬子對象。
設置窗口部件QWigdet格式
修改創建對象的那個兩行代碼:
0QWidget *widget=new QWidget(0,Qt::Dialog);
QLabel *label=new QLabel(0,Qt::SplashScreen);
運行結果:
(1)在現實生活中會遇到各式各樣的窗口,在程序示例中有一個Window Flags演示了所有窗口類型。
(2)還可以用setWindowState()函數設置窗口widget的狀態。具體可參考手冊。