我的QT Creator学习笔记(五)——窗口部件之QWidget

     参考文献:《Qt Creator 快速入门》第三版 霍亚飞编著

  在帮助索引中搜QWidget 并查看,The QWidget class is the base class of all user interface objects.QWidget是所有用户界面的基类,被称为基础窗口部件它是建立用户界面的主要元素。像主窗口、对话框、标签、按钮、文本输入框等都是窗口部件。

一、窗口与子部件。

          窗口就是没有嵌入到其他部件中的部件,又称为顶级部件。与其相对嵌入到别的部件中的部件叫子部件。如下代码,label是窗口,label2是子部件。

int main(int argc,char* argv[])
{
    QApplication a(argc,argv);
    //新建qtWidgets类对象,默认参数是0,所以是个窗口
    QWidget* widget=new QWidget();
    //设置窗口标题
    widget->setWindowTitle(QObject::tr("我是widget"));
    //新建QLabel对象,默认parent参数0,所以它是个窗口
    QLabel* label=new QLabel();
    label->setWindowTitle(QObject::tr("我是label"));
    label->resize(180,20);
    //label 2指定了父窗口为widget,所有不是窗口
    QLabel* label2=new QLabel(widget);
    label2->setText(QObject::tr("label2:I am not window,i am zibujian"));
    label2->resize(250,20);
    //在屏幕上显示出来
    label->show();
    widget->show();
    int ret=a.exec();
    delete label;
    delete widget;
    return ret;
}

运行结果

 

二、窗口类型和窗口状态

2、1窗口类型

QWidget的构造函数如下,

explicit QWidget(QWidget* parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags());

参数parent是父窗口,参数Qt::WindowFlags f是窗口类型,窗口类型是

Qt::WindowType枚举类型或类型的组合

 如

QWidget* widget=new QWidget(0,Qt::Dialog);//对话框类型

 

 

Qt::WindowFlags f可以是多个窗口枚举类型进行位或操作,如

 QWidget* widget=new QWidget(0,Qt::Dialog|Qt::FramelessWindowHint);//没有边框的窗口

 

三、窗口集合布局

 

窗口几何布局就是指窗口大小和位置。从帮助文档中,可以看到窗口的几何布局按照是否边框和标题栏分为两组不同函数。如下图所示

 

 

如下代码

    QWidget* widget=new QWidget(0,Qt::Dialog);
    widget->show();
    int x=widget->x();
    int y=widget->y();
    QRect geometry=widget->geometry();//不包含框架
    QRect frame=widget->frameGeometry();//包含框架
    qDebug()<<"x="<<x<<",y="<<y<<",geometry="<<geometry<<",frame="<<frame;

打印结果

,打印结果x= 511 ,y= 222 ,geometry= QRect(520,260 640x480) ,frame= QRect(511,222 658x527) 

 

widget到此为止,接下来几篇要学习几种常用的窗口部件。 

 


版权声明:本文为sinat_41928334原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。