区分窗口部件和子部件
窗口部件:没有父部件的部件,也称为顶部件。
子部件:嵌入在窗口的部件。
#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的状态。具体可参考手册。