继续投入战斗
窗口组件
图形用户界面由不同的窗口和窗口组件构成
<QtGui> 头文件包含窗口组件,对应Qt中的GUI模块
Qt 以组件对象的方式构建图形用户界面
组件类型:
- 容器类( 父组件 ) : 用于包含其他界面组件(和数据结构中的容器类不同,数据 结构中容器类指的是 链表,栈等)
- 功能类( 子组件 ) : 用于实现特定的交互功能
Qt中没有父组件的顶级组件叫窗口
QWidget 类继承自 QObject 类和 QpaintDevice 类
QObject 是所有支持 Qt 对象模型的基类
QpaintDevice 是Qt 中所有可会知组件的基类
QWidget 能够绘制自己和处理用户的输入
QWidget 是Qt中所有窗口组件类的父类( super class )(意义:抽象了所有图形用户界面所公有的属性和行为)
QWidget 是所有窗口组件的抽象
Qt 中的每个窗口组件都是一个 QWidget
QWidget 类对象常作为父组件或顶级组件使用
编程实验
QWidget 初探
#include <QtGui/QApplication>
#include "Widget.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget w; // 一个组件,如果没有父组件 成为了窗口,并且拥有窗口所拥有的元素(真正的QWidget在中间这一块)
w.setWindowTitle("celebrate");
w.show();
return a.exec();
}
// 结论:
// QWidget 虽然是所有图形用户界面类的父类,但是依然可以生成对象,生成的对象往往作为顶级组件使用,也就是可以作为其他组件的父组件
// 一个组件,如果没有父组件 成为了窗口,并且拥有窗口所拥有的元素
QLabel 组件
QLabel 用于显示一个提示性的字符串
QLabel 是功能性组件,一般需要父组件作为容器
QLabel 可以作为窗口存在, 但没什么意义
QWidget w; // 生成 QWidget 对象, 顶级组件
QLabel l(&w); // 生成QLabel 对象,其父组件为 QWidget
/* 设置 QLabel 组件的显示字符串 */
l.setText("this id a Lable control.");
编程实验
QLabel 组件的使用
#include <QtGui>
#include "Widget.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget w;
QLabel l(&w);
l.setText("I'm a label control.");
w.setWindowTitle("celebrate");
w.show();
return a.exec();
}
窗口类型
Qt中可以根据需要定制窗口式样
- 窗口类型(在帮助文档中查询)(对话框是一种特别的窗口,外观有些不同)
- Qt::Dialog ------ 对话框类型(作为顶级父类组件,没有最大化和最小话)
- Qt::Window ------ 主窗口类型(作为顶级父类组件,有最大化和最小话)
- Qt:: SplashScreen ------ 启动画面类型(欢迎界面)
- …………
- 窗口标志
- Qt::WindowStysOnTopHint(作为顶级窗口就不会被其他窗口遮挡)
- 用法: QWidget w(NULL, Qt::Window | Qt::WindowStysOnTopHint );
- Qt::WindowContextHelpButtonHint
总结:
Qt 以组件对象的方式构建图形用户界面
QWidget 类是所有用户界面组件的父类
QWidget 类对象常作为父组件或顶级组件使用
Qt 中可以根据需要定制窗口式样
QLable 用于显示一个提示性字符串
感谢关注,文章持续高速更新中……