“行高改变”的 QTableView 信号或事件
Posted
技术标签:
【中文标题】“行高改变”的 QTableView 信号或事件【英文标题】:QTableView signal or event for "row height changed" 【发布时间】:2014-04-01 08:51:52 【问题描述】:我正在寻找像 "row height changed" 这样的事件或信号,如果用户在我的 QTableView 中更改行的高度,则会调用该事件或信号。我想使用此信号将 QTableView 中的所有其他行调整为新高度。我没有找到这样的事件或信号,所以我认为一定有某种方便的解决方法。
任何建议将不胜感激。
【问题讨论】:
【参考方案1】:行大小调整由垂直 QHeaderView 执行。发出它的对象是 QTableView::verticalHeader()
你感兴趣的信号是
void QHeaderView::sectionResized ( int logicalIndex, int oldSize, int newSize )
在调整部分大小时发出此信号。节的逻辑编号由logicalIndex指定,旧大小由oldSize指定,新大小由newSize指定。
【讨论】:
【参考方案2】:使用QHeaderView
(可以通过调用QTableView::horizontalHeader()
/QTableView::verticalHeader()
获取实例)并连接到geometriesChanged()
或sectionResized()
【讨论】:
【参考方案3】:QHeaderView
和 sectionResized
的解决方案对我来说效果很好。所以为了调整所有
行到与编辑行相同的高度我现在使用此代码:
class MyWidget(QWidget):
def __init__(self, parent=None):
#Do some other init things
self.myTable.verticalHeader().sectionResized.connect(
self.row_resized)
def row_resized(self, index, old_size, new_size):
for i in range(self.myTable.verticalHeader().count()):
self.myTable.setRowHeight(i, new_size)
【讨论】:
以上是关于“行高改变”的 QTableView 信号或事件的主要内容,如果未能解决你的问题,请参考以下文章