Qt Creator提供默认基类只有QMain Window,QWidget和QDialog这三种。
QMainWindow是带有菜单栏和工具栏的主窗口类
QDialog是各种对话框的基类,而它们全部继承自QWidget.
#include <QtGui>
#include <QtWidgets>
int main(int argc,char *argv[])
{
QApplication a(argc,argv);
//在代码中可以使用中文字符串
//新建QWidget类对象,默认parent参数是0,所以它是个窗口
QWidget * widget = new QWidget(0,Qt::Dialog); //设置窗口标题 widget->setWindowTitle(QObject::tr("我是widget")); //新建QLabel对象,默认parent参数是0,所以它是个窗口 QLabel *label =new QLabel(0,Qt::SplashScreen); 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:我不是独立窗口,只是wiget的子部件")); label2->resize(250,20); //在屏幕上显示出来
label->show();
widget->show();
int ret = a.exec();
delete label;
delete widget;
return ret;
QT4的只有头文件#include<QtGui>模块才包含QApplication,QWidget等头文件
QT5模块分为QtGui模块和QtWidgets模块,其中Widget模块包含QApplication,Qwidget,Gui模块没有两个类。
注意这里使用new操作符为label2分配了空间,但是并没有使用进行释放,这是因为在Qt中销毁父对象的时候会自动销毁子对象。
QWidget的构造函数有两个参数:“QWidget * parent = o”和“Qt::Window Flags f= 0",前面的parent就是指父窗口部件,默认值为0,表示没有父窗口;而后面的f参数是Qt::WindowFlags类型的,是一个枚举类型,分为窗口类型和窗口标志。前面可以定义窗口的类型,比如f = 0表明使用了Qt::Widget一项,这就是QWidget的默认类型,这种类型的部件如果有父窗口,那么他就是子部件,否则就是独立的窗口。
QWidget * widget = new QWidget( 0,Qt::Dialog | Qt :: FramelessWindouHint);
QLabel * label = new QLabel ( 0,Qt::SplashScreen | Qt::WindowStaysOnTopHint);
Qt::FramelessWindowHint用来产生一个没有边框的窗口,而Qt::WIndowStaysOnTopHint用来使该窗口停留在所有其他窗口上面。