新建空的qmake项目,项目名称为mywidget01,完成后在mywidget01.pro中添加“QT += widgets”,然后往项目中添加C++源文件main.cpp,并添加一下代码:
#include<QtWidgets>
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();
int ret = a.exec();
delete label;
delete widget;
return ret;
}
这里包含了头文件#include <Qt Widgets>,因为下面所有要用到的类,如QApplication、QWidget等,都包含在Qt Widgets模块中,为了简便,只包含了Qt Widgets的头文件。一般的原则是要包含尽可能少的头文件,这里直接包含整个模块,只是为了说明这样也可以。程序中定义了一个QWidget类对象的指针widget,和两个QLabel对象指针label与label2,其中label没有父窗口,而label2在widget中,widget是其父窗口。
注意:这里使用的new操作符为label2分配了空间,但是并没有使用delete进行释放,这是因为Qt中销毁父对象的时候会自动销毁子对象,这里label2指定了parent为widget,所以delete widget时会自动销毁作为widget子对象的label2。