PyQT5 中的QTableWidget 信号

本文详细介绍了QTableView和QTableWidget类的属性及信号,包括网格显示、排序、文本换行等功能,以及单元格激活、点击、数据更改等事件触发的信号,为Qt应用开发提供了实用指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QTableView 类属性

  • showGrid 是否显示网格
  • gridStyle 绘制网格的样式
NoPen 没有网格
SolidLine 简单的线条
DashLine 破折号
DotLine 点
DashDotLine 交替的点和破折号
DashDotDotLine 一个破折号,两个点,一个破折号,两个点
CustomDashLine 使用定义的自定义模式
  • sortingEnabled 是否启用排序
  • wordWrap 文本自动换行
  • cornerButtonEnabled 左上角的按钮是否已启用

QTableWidget类属性

  • rowCount 行数
  • columnCount 列数

Header标题属性

  • horizontalHeaderVisible 是否显示水平标题栏
  • horizontalHeaderCascadingSectionResizes 用户调整达到最小后,是否将交互式大小调整级联到以下部分
  • horizontalHeaderDefaultSectionSize 默认每栏等宽显示宽度
  • horizontalHeaderHighlightSections 所选项目的部分是否突出显示
  • horizontalHeaderMinimumSectionSize 每栏可调节的最小宽度
  • horizontalHeaderShowSortIndicator 是否显示排序指示器
  • horizontalHeaderStretchLastSection 标头中的最后一个可见部分是否占用所有可用空间
  • verticalHeaderVisible 是否显示垂直标题栏
  • verticalHeaderCascadingSectionResizes 用户调整达到最小后,是否将交互式大小调整级联到以下部分
  • verticalHeaderDefaultSectionSize 默认每行等宽显示宽度
  • verticalHeaderHighligtSections 所选项目的部分是否突出显示
  • verticalHeaderMinimumSectionSize 每行可调节的最小宽度
  • verticalHeaderShowSortIndicator 是否显示排序指示器
  • verticalHeaderStretchLastSection 行中的最后一个可见部分是否占用所有可用空间

 

QTableWidget信号

信号触发条件:

  • activated(QModelIndex) 当用户激活index指定的项目时,发出信号
  • cellActivated(int,int) 单元格被激活时,发出信号,并传递(行,列)
  • cellChanged(int,int) 单元格中的项目数据发生更改时,发出信号,并传递(行,列)
  • cellClicked(int,int) 单击表格中的单元格,发出信号,并传递(行,列)
  • cellDoubleClicked(int,int) 双击表格中的单元格,发出信号,并传递(行,列)
  • cellEntered(int,int) 当鼠标光标进入单元格时,发出信号,并传递(行,列)
  • cellPressed(int,int) 按下表格中的单元格,发出信号,并传递(行,列)
  • clicked(QModelIndex) 左键单击鼠标按钮时,发出此信号
  • currentCellChanged(int,int,int,int) 单元格发生变化,发出信号(当前单元格的行列,先前具有焦点的单元格行列)
  • currentItemChanged(QTableWidgetItem*,QTableWidgetItem*) 项目发生变化,发出信号(当前项目,先前项目)
  • doubleClicked(QModelIndex) 双击鼠标按钮时,发出此信号
  • entered(QModelIndex) 当鼠标光标进入index指定的项目时,发出此信号
  • iconSizeChanged(QSize) 在视图可见时设置此图标大小时,发出此信号
  • itemActivated(QTableWidgetItem*) 表中项目被激活时,发出信号,并传递(项目)
  • itemChanged(QTableWidgetItem*) 表中项目数据发生变化,发出信号,并传递(项目)
  • itemClicked(QTableWidgetItem*) 单击表中的项目,发出信号,并传递(项目)
  • itemDoubleClicked(QTableWidgetItem*) 双击表格中的项目,发出信号,并传递(项目)
  • itemEntered(QTableWidgetItem*) 当鼠标光标进入项目时,发出信号,并传递(项目)
  • itemPressed(QTableWidgetItem*) 按下表格中的项目,发出信号,并传递(项目)
  • itemSelectionChanged() 选择发生变化,发出信号
  • pressed(QModelIndex) 按下鼠标按钮时会发出此信号
  • viewportEntered() 当鼠标光标进入视图时会发出此信号
PyQt5QTableWidget中,实现列宽度自动适应内容通常有两种方法: 1. **信号槽连接** (Slot Connections): 当单元格的内容发生变化时,你可以监听`currentCellChanged`信号,然后更新对应的列宽。以下是示例代码: ```python from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem from PyQt5.QtCore import pyqtSignal, Qt class CustomTableWidgetItem(QTableWidgetItem): cellContentChanged = pyqtSignal() def textChanged(self, *args, **kwargs): super().textChanged(*args, **kwargs) self.cellContentChanged.emit() class MyWindow(QWidget): def __init__(self): super().__init__() self.table = QTableWidget() self.table.cellContentChanged.connect(self.resize_column_to_content) ... # 初始化表格内容 def resize_column_to_content(self, row, column): col_width = self.table.columnWidth(column) + self.table.verticalHeader().width() self.table.setColumnWidth(column, col_width) if __name__ == "__main__": app = QApplication([]) window = MyWindow() window.show() app.exec_() ``` 这里,我们在`CustomTableWidgetItem`类中添加了一个文本更改信号,当单元格内容变化时会触发。`resize_column_to_content`方法会在接收到信号时,计算当前列加上表头宽度后的总宽度,并调整列宽。 2. **布局策略** (Layout Strategies): 使用`horizontalHeader().setSectionResizeMode()`,可以设定列的大小策略为`QHeaderView.ResizeToContents`,它会自动调整列宽以适应内容: ```python self.table.setHorizontalHeaderSectionResizeMode(QHeaderView.ResizeToContents) ``` 这会自动调整所有列的宽度,使其适应各自的单元格内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值