QWidget是所有可视化控件的基类
- 它是一个空白控件
- 控件是界面的最小元素
- 每个控件都是矩形,按照z轴排序
- 控件会被上面的控件遮挡、或被父控件剪切
- 没有父控件的控件被称为窗口
- 组合控件(Composite Widget),当一个控件被用作一个容器去容纳多个子控件时,这个控件就被称为组合控件。(父子关系)
布局Layout
属性 | 作用 | |
| 布局管理器到界面上下左右的距离 | |
layoutSpacing | 设置各子部件间的距离 | |
layoutStretch | 伸缩因子 | |
layoutSizeConstraint | 设置大小约束条件 | |
setDefaultConstraint | 主窗口大小设置为minimumSize()的值,除非该部件已有一个最小值 | |
setFixedSize | ||
setMinimumSize | ||
setMaximumSize | ||
setMinAndMaxSize | ||
setNoConstraint | 部件不被约束 |
窗口部件管理器Form Layout
专门用来快速添加表单的,通过双击该部件,出现这个弹窗
,即可快速添加。
弹簧spacer
按钮Button
项视图Item View
List View :清单视图、Tree View :树视图、Table View :表视图、Column View :列视图、Undo View :撤销列表
项控件Item Widget
QTableWidget
看似有两行两列的表格,实则通过拖出的控件,每个单元格是没有Item指针!
qDebug() << ui->tableWidget->item(0, 0)->text();
输出0x00
,说明是空指针。
另外,用鼠标点击控件添加的行或列,实际等同下面代码
ui->tableWidget->setColumnCount(数量);
ui->tableWidget->setRowCount(数量);
也就是说,在没有为tableWidget设置行列时,new出来的QTableWidgetItem,使用setItem,依旧没有用。
总结:先有QTableWidget,再有行列,然之后有每个单元格Item。不然,将获取空指针。
在应用上,对控件添加列表头信息,用代码动态添加行,添加每个Item,依此生成表格。
setSectionResizeMode
setSectionResizeMode(1, QHeaderView::ResizeToContents);
对列设定,根据单元格内容设置宽度,见下图。列1没有被压缩。
setCellWidget
删除TableWidget,并不会自动释放传入的控件!!!
删除所有行
需要从后往前删
容器Container
QFrame
属性 | 作用 | 展开里的 |
frameShape | 边框形状 | NotFrame:无边框 Box:有边框 Panel:面板,使内容表现为凸起或凹陷 WinPanel:Windows2000面板形式 HLine:水平线 VLine:垂直线 StyledPanel:样式面板,效果依赖当前GUI样式 |
frameShadow | 边框阴影 | Plain:平面的,无3D效果 Raised:凸起的,边框和内容表现为凸起 Sunken:凹陷的,边框和内容表现为凹陷 |
lineWidth | 线宽 | |
midLineWidth | 在边框中额外插入一条线的宽度,为了形成3D效果,并且只有在设置Box、HLine、VLine有用 |
lineWidth与midLineWidth组合的效果:
输入控件Input Widget
Combo Box
Line Edit
readonly,让光标不显示