一、 继承结构
所有的窗口类均继承自QWidget类,因此QWidget类本身包含窗口的特性。QWidget对象本身既可以作为独立窗口,又可以作为组件(子窗口)。
通过构造函数可以创建以上两种形态的QWidget:
// 参数1:使用默认值0时,创建的对象为独立窗口。
// 参数2:窗口标记属性(后面讲)
QWidget::QWidget(QWidget * parent = 0,
Qt::WindowFlags f = 0)
当创建项目时,基类选择QWidget,此时自带的窗口w对象就是继承自QWidget的独立窗口效果。
QWidget作为独立窗口的基类,内部常用的相关功能如下:
- windowFlags : Qt::WindowFlags
窗口标记,可以设置一些枚举值,给窗口不同的显示效果,如果要同时设置多个标记,可以使用 | 分隔。
下面是一些常见标记:
二、QMessageBox 消息对话框
QMessageBox直接继承QDialog,是一个用于通信用户或询问用户一个问题并接受答案的模态对话框。
预设了四种类型的弹窗:
这些QDialog的派生类往往适用于一个具体的开发场景,弹窗无需创建对象,直接使用静态成员函数。
// 参数1:父窗口
// 参数2:窗口标题
// 参数3:展示信息
// 返回值:枚举,表示用户点击的按键类型
QMessageBox::StandardButton QMessageBox::critical|imformation|question|warning(
QWidget * parent,
const QString & title,
const QString & text) [static]
三、QStackedWidget 堆栈窗口
QStackedWidget包含多个QWidget子窗口,同时只能显示一个,子窗口之间可以翻页切换显示。
通常配合QListWidget使用。
QListWidget提供信号函数:
// QListWidget当前选项发生变化时发射
// 参数为当前选项的索引
void currentRowChanged(int currentRow) [signal]
QStackedWidget提供槽函数:
// 设置显示页的索引
void setCurrentIndex(int index) [slot]
四、QMainWindow 主窗口类
1.主窗口类型
QMainWindow是最合适作为主窗口的类型,因为包含若干组成部分:
2.QToolBar 工具栏
工具栏上的工具按钮通常都是菜单栏里的QAction对象(设置图标),因此:
- 通过C++代码设置工具栏按钮
/ 向工具栏中添加工具按钮
// 参数为设置了图标的QAction对象
void QToolBar::addAction(QAction * action)
3.QWidget 中心组件
就是一个作为子窗口的QWidget对象。
4.QStatusBar 状态栏
状态栏可以自定义,通过文档中对应add函数增加各种自定义组件,课下感兴趣可自行拓展。预设的状态栏可以显示文本信息,相关函数如下:
// 在状态栏显示信息
// 参数1:信息内容
// 参数2:显示的毫秒数,0表示长显示
void QStatusBar::showMessage(const QString & message, int timeout = 0) [slot]
// 清除状态栏显示信息
void QStatusBar::clearMessage() [slot]