【发布时间】:2014-04-01 08:51:52
【问题描述】:
我正在寻找像 "row height changed" 这样的事件或信号,如果用户在我的 QTableView 中更改行的高度,则会调用该事件或信号。我想使用此信号将 QTableView 中的所有其他行调整为新高度。我没有找到这样的事件或信号,所以我认为一定有某种方便的解决方法。
任何建议将不胜感激。
【问题讨论】:
我正在寻找像 "row height changed" 这样的事件或信号,如果用户在我的 QTableView 中更改行的高度,则会调用该事件或信号。我想使用此信号将 QTableView 中的所有其他行调整为新高度。我没有找到这样的事件或信号,所以我认为一定有某种方便的解决方法。
任何建议将不胜感激。
【问题讨论】:
行大小调整由垂直 QHeaderView 执行。发出它的对象是 QTableView::verticalHeader()
你感兴趣的信号是
void QHeaderView::sectionResized ( int logicalIndex, int oldSize, int newSize )
在调整部分大小时发出此信号。节的逻辑编号由logicalIndex指定,旧大小由oldSize指定,新大小由newSize指定。
【讨论】:
使用QHeaderView(可以通过调用QTableView::horizontalHeader()/QTableView::verticalHeader()获取实例)并连接到geometriesChanged()或sectionResized()
【讨论】:
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)
【讨论】: