QT学习笔记-常用界面组件的使用
QWidget 是所有界面组件类的直接或间接父类。QWidget 的父类是 QObject 与 QPaintDevice。
Widget 组件:所有界面组件的统称,它从操作系统接收鼠标,键盘和其他事件,并在屏幕上显示自己,每个组件都是矩形的,并且按 z 轴顺序排列。
window:没有嵌入到父组件中的组件。通常,有一个 frame 和一个标题栏,可以使用 window flags 创建没有这两个装饰的窗口。在 Qt 中,QMainWindow 和 QDialog 的各种子类是最常用的 window 类型。
QWidget 类的主要属性和接口函数
sizePolicy:QSizePolicy
QSizePolicy 类用于描述布局中的水平和垂直大小调整策略。包含两个枚举值(垂直,水平),其值是枚举类型 QSizePolicy::Policy,还包含 stretch 值:
| constant | value | description |
|---|---|---|
| QSizePolicy:: Fixed | 0 | 是否固定大小 |
| QSizePolicy:: Minimum | GrowFlag | 最小值 |
| Maximum | ShrinkFlag | 最大值 |
| … | … | … |
QWidget 作为窗口时的一些函数和属性
| context | function |
|---|---|
| Window function | show(), hide(), raise(), lower(), close() |
| Top-level function | windowModified(), showMaximized(), fullScreen, showNormal(), activateWindow() 等 |
| Window contents | update(), repaint(), scroll() 等 |
| … | … |
布局管理
通过一些类实现,经过预编译后,被转换为 c++代码。
QStackedLayout:在 designer 里没有体现,提供了一个组件堆叠,其中一次只有一个可见。
Grid layout 与 Form layout 区别:Grid layout 是先划分空间,然后再放元素。而 Form layout 则是直接放元素,可以不放满空间。
容器组件:可以将一组需要布局管理的组件放在一个容器组件中,这样,当容器大小变化时,里面的组件也会自动变化。
layoutStretch:用于设置划分空间的比例,对于 Grid layout,应该使用全局设置,设置单个组件的 stretch 的使用不大。
| 数值 | 意思 |
|---|---|
| 0,0,0 | 3 个组件平均分 |
| 0,0,1 | 前两个达到合适宽度后不再加宽度,其余的都给第三个 |
| 1,1,2 | 三个组件以 1:1:2 的比例分1 |
QGridLayout 类添加组件的函数是 addWidget() |
1 | void QGridLayout::addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment()); |
rowSpan 与 columnSpan 为因子。
分割条
分割条允许用户通过拖动子 widget 之间的边界来控制子 widget 的大小,任意数量的部件都可以由单个分割条控制。
使用 addWidget 来添加子部件
QString 字符串操作
QString 没有父类,QString 存储一个由 16 位 Qchar 组成字符串,每个 QChar 对应一个 UTF-16 编码单元。(编译值大于 65535 的 unicode 字符使用两个连续的 QChar 存储)
QString 的创建和初始化
将 const char * 传递给它的构造函数。例:下面的代码创建了一个包含 "hello" 的长度为 5 的 QString。
1 | QString str = "hello"; |
QString 字符串的索引:
QString 使用从 0 开始的索引,像 c++的数组一样。要访问特定索引位置的字符,可以使用 [] 运算符。对于非常量字符串,运算符 [] 返回一个指向字符的引用,可以在赋值语句的左侧使用。
QSpinBox 和 QDoubleSpinBox
QSpinBox 和 QDoubleSpinBox 都是 QAbstractSpinBox 的子类。
设置前缀与后缀
前缀:prefix();后缀:suffix();
读取数值
- 包括前缀与后缀:
text(); - 不包括前缀与后缀:
cleanText()
设置最大值与最小值
最大值:maximum();最小值:minimum();
设置步长:singlestep();
设置当前显示的值:value()
设置显示时使用的进制:displayIntergerBase()
设置显示数值的小数位数:decimals()
常用的按钮按键
常用的按钮组件有普通按钮 QPushButton,工具按钮 QToolButton,单选按钮 QRadioButton,复选框 QCheckBox,父类都是 QAbstractBUtton,所以有很多共同的特性。例如,QAbsctractButton 具有 checkable 和 checked 属性,所以,这些按钮都是可复选的。通过属性设置,QPushBUtton 也可以实现 QCheckBox 或 QRadioButton 的功能。
QAbstractButton 的 autoExclusive 属性:如果启用了自动独占性,属于同一个父部件的可检查按钮将互斥。
QGroupBox 的 flat 属性:可以最小化区域框的空间消耗。在大多数样式中,启用这个属性会移除框架的左边缘,右边缘和底边。
QSlider 与 QProgressBar
滑动条 QSlider,卷滚条 QScrollBar 和表盘 QDial 是 3 个滑动行输入组件,可用于输入数值,他们的基类都是 QAbstractSlider。
进度条 QProgressBar 是常见的用于数值显示的组件,特别适用于显示百分比进度。
日期时间数据
- QTime:时间数据类型
- QDate:日期数据类型
- QDateTime:日期时间数据类型
- QCalenderWidget:一个用日历形式选择日期的组件
字符格式
| 格式字符 | 意义 |
|---|---|
| d | 天,不补 0 显示 |
| dd | 天,补 0 显示 |
| … | … |
QComboBox(下拉列表)
QComboBox 是下拉列表框组件,它提供一个下拉列表供用户选择输入,也可以提供一个编辑框用于输入文字。ComboBox 下拉的每个项还可以存储一个或多个 QVariant 类型的用户数据,用户数据并不显示在界面上。
placeholderText:QStringcurrentIndex 为 -1 时显示的内容。在下来列表中并不会显示。
QMainWindow 和 QAction
QMainWindow 是主窗口类,具有菜单栏,工具栏,状态栏等主窗口常见的界面元素。在 ui 可视化设计时,可以设计很多 Action,然后用 Action 创建菜单项和工具栏按钮。
QToolButton 和 QListWidget
QListWidget 是显示的列表组件,列表的每个项是一个 QListWidgetItem 对象,一个项存储了文字,图标,用户数据等内容。
QTreeWidget
QTreeWidget 是一种 Item Widget 组件,即树形组件,它的项被称为节点。树形组件适合于显示具有层级结构的数据。
QTreeWidget 组件的表头和目录树节点都是 QTreeWidgetItem 类对象
QTableWidget
是一种 Item Widget 组件,它以表格形式显示和管理数据。表格的每个单元格关联一个 QTableWidgetItem 对象,可以设置每个单元格的文字内容,字体,文字颜色,背景色,图标等,还可以有复选框。每个单元格还可以存储用户数据。