Qt学习笔记——TableWidget的一些学习东西
TableWidget的一些学习东西
使用QtDesigner绘制表格,但是表格出现很多问题,烦死了,整理了一些内容。
在使用 Qt Designer 设置 QTableWidget
时,涉及大量属性选项,尤其是在初学阶段常常因为属性设置不当而导致表格显示异常。本文系统梳理了 TableWidget
相关属性的功能与使用建议,帮助你快速掌握 Qt Designer 中的表格控件设置。
🔷 表头设置:horizontalHeader
与 verticalHeader
horizontalHeaderVisible
(是否显示横向表头)
- ✔ 勾选:显示列标题(默认开启)
- 取消勾选:隐藏表格列标题栏
horizontalHeaderCascadingSectionResizes
- 启用级联调整列宽
- 调整一列宽度时会影响后续列宽
- 一般不常用,建议关闭
horizontalHeaderDefaultSectionSize
(默认列宽)
- 设置每列的初始宽度(如:77)
- 适用于未自定义列宽时的默认行为
horizontalHeaderHighlightSections
- 控制点击列标题时是否高亮
- 推荐保持勾选 ✔
horizontalHeaderMinimumSectionSize
- 限制列的最小宽度(如:24px)
- 防止列被拖动得过窄
horizontalHeaderShowSortIndicator
- 是否显示列标题的排序箭头(▲▼)
- 如启用排序:
setSortingEnabled(True)
,建议勾选
horizontalHeaderStretchLastSection
- 让最后一列自动填满剩余空间
- 启用后将忽略默认列宽
verticalHeaderVisible
(是否显示纵向表头)
- ✔ 显示行号
- 取消勾选则隐藏行标题
verticalHeaderCascadingSectionResizes
- 行的级联缩放(作用类似列)
- 实际使用较少,默认关闭
verticalHeaderDefaultSectionSize
(默认行高)
- 控制表格每一行的默认高度(如:30)
verticalHeaderHighlightSections
- 点击行标题是否高亮显示
- 推荐勾选 ✔
verticalHeaderMinimumSectionSize
- 设置每行最小高度(如:23)
verticalHeaderShowSortIndicator
- 行排序箭头显示(不常用)
- 一般不勾选
verticalHeaderStretchLastSection
- 是否让最后一行填满剩余空间
- 实际使用较少,默认关闭
✅ 如何让列宽自动适配内容?
Qt Designer 并不直接支持“内容自动列宽”,你需要在代码中实现:
tableWidget.resizeColumnsToContents()
或者设置自适应模式:
header = tableWidget.horizontalHeader()
header.setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)
🔷 控件基本属性
objectName
- 控件在代码中的标识名(如
tableWidget
) - 用于引用:
self.tableWidget.setRowCount(5)
enabled
- 控件是否启用:
- ✔ 勾选:可以交互
- ❌ 不勾选:控件变灰,不可用
geometry
- 控件的位置与大小,如:
X=0, Y=430, 宽度=941, 高度=161
sizePolicy
(大小策略)
- 控制控件在布局中的伸缩行为:
Fixed
:固定尺寸Preferred
:根据内容变化Expanding
:可伸缩填充
- 如:
- 水平策略:
MinimumExpanding
- 垂直策略:
Expanding
- 水平策略:
minimumSize
/ maximumSize
- 限制控件的最小 / 最大尺寸范围
sizeIncrement
- 控件拉伸的增量设置(很少用)
baseSize
- 控件参考的基础大小
🔷 外观与字体设置
palette
- 控件的调色板设置(默认继承父控件)
font
- 控件字体设置:
- 字体:Microsoft YaHei UI
- 点大小:9
- 样式:加粗、下划线、斜体等
- 支持抗锯齿 ✔
cursor
- 鼠标悬停时的指针样式,如箭头、手型等
mouseTracking
- 鼠标移动时是否触发事件(默认关闭)
tabletTracking
- 是否跟踪手写板输入(用于笔类应用)
🟡 提示信息设置
toolTipDuration
- 提示框显示时间(毫秒)
-1
为默认(10秒)
statusTip
- 鼠标悬停时显示在状态栏的信息
whatsThis
- Shift+F1 后点击控件显示的帮助文本
accessibleName
/ accessibleDescription
- 提升无障碍功能(屏幕阅读器读取)
🟡 外观方向与样式
layoutDirection
- 控件内容方向:
LeftToRight
(默认)RightToLeft
(如阿拉伯语)
autoFillBackground
- 是否自动填充背景色(配合
palette
使用)
styleSheet
-
控件 CSS 样式设置,例如:
QTableWidget { background-color: #f0f0f0; color: black; }
locale
- 控件的语言与地区设置,如:
Chinese, China
English, US
等
inputMethodHints
- 输入法提示,限制输入模式(如数字、密码等)
🟩 QFrame 属性(QTableWidget 继承自 QFrame)
frameShape
- 边框样式:
StyledPanel
(默认)Box
,NoFrame
,HLine
等
frameShadow
- 阴影样式:
Sunken
:下凹Raised
:凸起Plain
:无阴影
lineWidth
/ midLineWidth
- 设置边框线宽
🟦 QAbstractScrollArea 属性
verticalScrollBarPolicy
/ horizontalScrollBarPolicy
- 滚动条策略:
ScrollBarAsNeeded
(内容超出时显示)ScrollBarAlwaysOn
ScrollBarAlwaysOff
sizeAdjustPolicy
- 控件尺寸与内容的匹配策略:
AdjustIgnored
(默认)AdjustToContents
🟪 QAbstractItemView 属性(核心行为)
autoScroll
- 拖拽单元格时是否自动滚动
autoScrollMargin
- 离边缘多少像素触发自动滚动(默认16)
editTriggers
-
表格单元格内容编辑触发方式:
DoubleClicked
:双击编辑EditKeyPressed
:F2 或 EnterAnyKeyPressed
:按任意键NoEditTriggers
:完全禁用
示例代码:
self.tableWidget.setEditTriggers(QtWidgets.QAbstractItemView.DoubleClicked)
tabKeyNavigation
- 是否支持使用
Tab
键在单元格间跳转
showDropIndicator
- 拖拽放置时是否显示插入线
✅ 总结
通过 Qt Designer 设置 TableWidget
的属性虽然繁琐,但掌握核心字段后可以显著提升表格的美观性与交互性。推荐掌握的关键属性有:
- 表头显示与排序:
horizontalHeaderVisible
,showSortIndicator
- 行列尺寸控制:
defaultSectionSize
,minimumSectionSize
,stretchLastSection
- 编辑触发:
editTriggers
- 滚动控制:
scrollBarPolicy
,autoScroll