当前位置:   article > 正文

14 窗口、子窗口、窗口几何尺寸_qt:子窗口的配置参数

qt:子窗口的配置参数

QWidget类是所有用户界面对象的基类,被称为基础窗口部件。QWidget继承自QObject类和QPaintDevice类。

QObject类是所有支持Qt对象模型(Qt Object Model)的Qt对象的的基类。

QPaintDevice类是所有可以绘制的对象的基类。

简单代码:

  1. #include "mainwindow.h"
  2. #include <QApplication>
  3. #include <QLabel>
  4. #include <QWidget>
  5. int main(int argc, char *argv[])
  6. {
  7. QApplication a(argc, argv);
  8. MainWindow w;
  9. // w.show();
  10. //新建一个窗口 没有父对象
  11. QWidget *widgetParent = new QWidget();
  12. widgetParent->setWindowTitle(QObject::tr("我是widget窗口"));
  13. // labelChild指定了父窗口为widget,所以不是窗口
  14. QLabel *labelChild = new QLabel(widgetParent);
  15. labelChild->setText(QObject::tr("labelChild:我不是独立窗口,\n只是widget的子部件"));
  16. // 新建QLabel对象,没有父对象
  17. QLabel *label2Parent = new QLabel();
  18. labelParent->setWindowTitle(QObject::tr("我是labelParent窗口"));
  19. //设置窗口的大小
  20. labelParent->resize(300,300);
  21. // 设置要显示的信息
  22. labelParent->setText(QObject::tr("labelParent:我是个窗口"));
  23. // 在屏幕上显示出来
  24. labelParent->show();
  25. widgetParent->resize(300,300);
  26. widgetParent->show();
  27. int ret = a.exec();
  28. delete widgetParent;//会自动删除labelChild;
  29. delete labelParent;
  30. return ret;
  31. }

运行结果:

窗口部件(Widget):简称部件,是搭建Qt界面的主要组成部分。窗口部件不但包含我们前面讲过的QMainWindow、QDialog、QWidget还包括我们常用的按钮、标签、表格、单选框等都是窗口部件。

窗口:我们把没有嵌入到其他部件中的部件称为窗口,窗口一般都有标题栏和边框。 窗口就是没有父部件的部件,所以称为顶层部件。

子部件:又称非窗口部件,在Qt中大部分部件被用作子部件,它们嵌入在别的窗口中,例如我们常说的按钮、标签、单选框等。

窗口类型

QWidget构造函数:QWidget::QWidget(QWidget * parent = 0, Qt::WindowFlags f = 0) 

(1)前面的parent就是指父窗口部件,默认值为0,表明没有父窗口;

(2)f参数是Qt::WindowFlags枚举类型的,分为窗口类型(WindowType)和窗口标志(WindowFlags)。

(3)前者可以定义窗口的类型,比如我们这里f=0,表明使用了Qt::Widget一项,这是QWidget的默认类型,这种类型的部件如果有父窗口,那么它就是子部件,否则就是独立的窗口。

(4)后者包括了很多类型,

常用标志举例

Qt::FramelessWindowHint用来产生一个没有边框的窗口。

Qt::WindowStaysOnTopHint用来使该窗口停留在所有其它窗口上面。

Qt::Dialog用来生成对话窗口(就是带问号的窗口)

Qt::SplashScreen用来产生一个没有边框的窗口。

窗口的几何尺寸

对于一个窗口,往往要设置它的大小和运行时出现的位置,这就是窗口几何布局。在前面的例子中已经看到了, widgetParent默认的大小就是它所包含的子部件 labe2Child的大小,即使widgetParent设置了大小,还是以labe2Child为准。

而widgetParent和labe2Child出现时在窗口上的位置也是不确定的。对于窗口的大小和位置,根据是否包含边框和标题栏两种情况,要用不同的函数来获取。可以在帮助索引中查看Window and Dialog Widgets关键字,文档中显示了窗口的几何布局图,

这里的函数分为两类,一类是包含框架的,一类是不包含框架的:

包含框架:x()、y()、frameGeometry()、pos()和move()等函数;

不包含框架:geometry()、width()、height()、rect()和size()等函数。

可以添加以下代码得到:

  1. qDebug()<<"widgetParent->x();"<<widgetParent->x();
  2. qDebug()<<"widgetParent->y();"<<widgetParent->y();
  3. qDebug()<<"widgetParent->pos();"<<widgetParent->pos();
  4. qDebug()<<"widgetParent->frameGeometry();"<<widgetParent->frameGeometry();
  5. qDebug()<<"widgetParent->geometry();"<<widgetParent->geometry();
  6. qDebug()<<"widgetParent->width();"<<widgetParent->width();
  7. qDebug()<<"widgetParent->height();"<<widgetParent->height();
  8. qDebug()<<"widgetParent->size();"<<widgetParent->size();
  9. qDebug()<<"widgetParent->rect();"<<widgetParent->rect();

 

 

 

 

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/887863
推荐阅读
相关标签
  

闽ICP备14008679号