当前位置: 首页 > news >正文

Qt学习笔记——TableWidget的一些学习东西

TableWidget的一些学习东西

使用QtDesigner绘制表格,但是表格出现很多问题,烦死了,整理了一些内容。

在使用 Qt Designer 设置 QTableWidget 时,涉及大量属性选项,尤其是在初学阶段常常因为属性设置不当而导致表格显示异常。本文系统梳理了 TableWidget 相关属性的功能与使用建议,帮助你快速掌握 Qt Designer 中的表格控件设置。


🔷 表头设置:horizontalHeaderverticalHeader

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 或 Enter
    • AnyKeyPressed:按任意键
    • NoEditTriggers:完全禁用

    示例代码:

    self.tableWidget.setEditTriggers(QtWidgets.QAbstractItemView.DoubleClicked)
    

tabKeyNavigation

  • 是否支持使用 Tab 键在单元格间跳转

showDropIndicator

  • 拖拽放置时是否显示插入线

✅ 总结

通过 Qt Designer 设置 TableWidget 的属性虽然繁琐,但掌握核心字段后可以显著提升表格的美观性与交互性。推荐掌握的关键属性有:

  • 表头显示与排序:horizontalHeaderVisible, showSortIndicator
  • 行列尺寸控制:defaultSectionSize, minimumSectionSize, stretchLastSection
  • 编辑触发:editTriggers
  • 滚动控制:scrollBarPolicy, autoScroll

相关文章:

  • 精品推荐-最新大模型MCP核心架构及最佳实践资料合集(18份).zip
  • Named Entity Recognition with Bidirectional LSTM-CNNs(于双向LSTM神经网络的命名实体识别)论文阅读
  • JDBC驱动autosave缺陷的修复与配置指南
  • 移动端六大语言速记:第10部分 - 标准库与框架
  • c++知识点1
  • AI数据分析的正道是AI+BI,而不是ChatBI
  • 改善 Maven 的依赖性
  • SUNO-听你所想
  • Linux目录探秘:文件系统的核心架构
  • docker部署jar包并启动
  • PyTorch实现二维卷积与边缘检测:从原理到实战
  • idea光标变成白色方块的解决方法
  • AF3 ProteinDataset类的初始化方法解读
  • UWB定位算法详解(2025年更新版)
  • 电气隐患难察觉?安科瑞智慧用电方案实现风险实时可视化管理
  • 项目整合提问
  • LeetCode hot 100—最长回文子串
  • java HttpServletRequest 和 HttpServletResponse
  • 制作一款打飞机游戏教程1
  • 使用 Redis + Redisson 分布式锁来生成全局唯一、线程安全的带日期前缀的流水号的完整实现。
  • 百事可乐网站建设优缺点/百度推广一般要多少钱
  • 幼儿园网站建设实践研究/hao123网址之家官网
  • wordpress 上传图片错误/关键词优化公司哪家强
  • 网站建设过程的结构图/北京seo优化wyhseo
  • 网站提取规则怎么设置/yandex搜索引擎
  • 静态网站可以做留言板/百度下载老版本