006_窗口组件及窗口类型

Posted luosir520

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了006_窗口组件及窗口类型相关的知识,希望对你有一定的参考价值。

一、 窗口组件

  • 图形用户界面由不同的窗口和窗口组件构成
  • "QtGui" 头文件包含窗口组件,对应Qt中的GUI模块
  • Qt以组件对象的方式构建图形用户界面
  • 组件的类型:
  1. 容器类(父组件):用于包含其它的界面组件,那么界面组件指的就是功能类的子组件。
  2. 功能类(子组件):用于实现特定的交互功能。比如:按钮组件,标签组件,文本框组件
    如果一个组件,不管是容器类还是功能类的,一旦没有了父组件,那么它将成为窗口。

技术图片
窗口包含了对话框,也就是说对话框是一个特殊的窗口。

QWidget 类继承自 QObject 类和 QPaintDevice 类

  • QObject 是所有支持Qt对象模型的基类(多继承:同时继承了QObject和QPaintDevice两个类)
  • QPaintDevice 是Qt中所有可绘制组件的基类
    技术图片

二、 QWidget组件

  • QWidget 能够绘制自己(能够在屏幕上把自己画出来)和处理用户的输入(比如:按钮类,文本框类他们所实现的最后图形用户界面的组件都必须要接收用户的输入,它们都是继承自QWidget)
  • QWidget 是Qt中所有窗口组件类的父类(super class)
  • QWidget 是所有窗口组件的抽象
  • Qt中的每个窗口组件都是一个 QWidget
  • QWidget 类对象常作为父组件或顶级组件使用

三、 编程实验

1、 QWidget初探

第一步:创建一个新的GUI应用工程
技术图片
使用影子构建(不会玷污到源工程文件)
技术图片
第二步:使用 QWidget 基类,由于暂时不需要使用拖画的方式来生成图形界面,所以不用勾选创建界面选项
技术图片
第三步:创建好后可以直接构建工程,构建的过程可以用来测试当前的工程是否有问题
第四步:改为生成一个QWidget的对象,然后再次构建,并运行
技术图片
这个窗口就是QWidget这个类所带来的
问:我们并没有在代码里面创建真正的窗口,那运行得到的结果(标题栏,最大化,最小化按钮是如何出来的呢?)
答:这就依赖于QT里面内置的概念,如果Qt中没有父组件的顶级组件将成为窗口。所以这个窗口将由我们的Qt自动生成,Qt在QWidget的外面加上了窗口所特有的东西,比如:标题,最大化,最小化和关闭按钮。

2、 修改代码,在显示之前设置窗口的标题

技术图片

四、 QLabel 组件

  • QLabel 用于显示一个提示性的字符串
  • QLabel 是功能性组件,一般需要父组件作为容器
  • QLabel 可以作为窗口存在,但是没有意义
    技术图片

五、 编程实验(QLabel 组件的使用)

技术图片

六、 窗口类型

Qt中可以根据需要定制窗口式样

1、 窗口类型

  • Qt::Dialog ----- 对话框类型
  • Qt::Window ----- 主窗口类型
  • Qt::SplashScreen ----- 启动画面类型
  • ......

2、 窗口标志

  • Qt::WindowStaysOnTopHint ----- 窗口置顶
  • Qt::WindowContextHelpButtonHint ----- 向对话框添加上下文帮助按钮

七、 编程实验(窗口类型与窗口标志)

a. 对话框类型

技术图片

b. 主窗口类型(默认为主窗口类型)

技术图片

c. 启动画面类型

技术图片
没有标题栏,最大化,最小化的窗口,作用:比如软件刚刚启动的图形界面

d. 向对话框添加上下文帮助按钮

技术图片

八、 小结

  • Qt以组件对象的方式来构建图形用户界面
  • 所有的图形用户界面类都继承自QWidget,它抽象了所有图形用户界面类的公共功能出来
  • Qt中可以根据需要定制窗口的式样,只需要在创建顶级组件(也叫窗口)的时候指定不同的参数即可
  • QLabel用于显示一个提示性的字符串给用户

以上是关于006_窗口组件及窗口类型的主要内容,如果未能解决你的问题,请参考以下文章

窗口部件及窗口类型

QT之窗口部件及窗口类型

Qt学习之路2---窗口组件及窗口类型

QT开发——窗口组件和窗口类型

QT_5-QDialog

从窗口句柄获取自定义 .NET 类的组件类型