GUI 程序的开发原理:
GUI 程序在运行的时候,操作系统会为它创造一个消息队列,消息队列用于存储操作系统发过来的系统消息。
用户使用操作系统的过程中,操作系统内核检测到用户的操作(鼠标,键盘),会把这个操作翻译成程序消息,并将程序消息发送到拥有焦点的应用程序上去,这个有焦点的应用程序就是 GUI 应用程序,我们的 GUI 应用程序可以在消息队列中将发过来的消息给检测到,并把程序消息拿出来实时响应。
1、窗口组件
- 图形用户界面由不同的窗口和窗口组件组成
- 组件的类型
— 容器类(父组件):用于包含其它的界面组件
— 功能类(子组件):用于实现特定的交互功能
Qt 中没有父组件的顶级组件叫做窗口
QWidget
QWidget
继承于QObject
和QPaintDevice
—QObject
是所有支持 Qt 对象模型的基类
—QPaintDevice
是 Qt 中所有可绘制组件的基类
—QWidget
是 Qt 中所有窗口组件类的父类,常作为父组件或顶级组件使用
QLabel 组件
QLabel
用于显示一个提示性的字符串QLabel
是功能性组件,一般需要父组件作为容器QLabel
可以作为窗口存在,但没什么意义
QWidget w;
QLabel l(&w);
l.setText("This is a label control.");
QLineEdit 组件
QLineEdit
用于显示一个行编辑来接受用户输入QLineEdit
能够在父组件中定位
QWidget w;
QLineEdit le(&w);
le.setAlignment(Qt::AlignRight); //设置显示的字符串向右边对齐
le.move(10, 10);
le.resize(240, 30);
QPushButton 组件
QPushButton
用于显示一个按钮
2、窗口类型
— 窗口类型:QWidget w(QWidget* Parent,Qt::WindowFlags);
Qt::Window
— 主窗口类型,包含最大化、最小化和关闭按钮
Qt::Dialog
— 对话框类型,最大化和最小化按钮没有了,只有一个帮助和关闭按钮
Qt::SplashScreen
— 启动动画类型,没有标题栏,最大化最小化和关闭按钮,一般用来作为软件开始时的欢迎界面
用法:QWidget w(NULL, Qt::Dialog);
— 窗口标志:
Qt::WindowStaysOnTopHint
— 有点像模态对话框,顶级窗口Qt::WindowContextHelpButtonHint
— 文本帮助对话框Qt::WindowCloseButtonHint
— 只有关闭按钮的窗口,计算器界面就是用这个
用法:
QWidget w(NULL, Qt::Window | Qt::WindowContextHelpButtonHint);
QWidget w(NULL, Qt::WindowCloseButtonHint);