“行高改变”的 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】:

QHeaderViewsectionResized 的解决方案对我来说效果很好。所以为了调整所有 行到与编辑行相同的高度我现在使用此代码:

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 信号或事件的主要内容,如果未能解决你的问题,请参考以下文章

QTableView - 没有得到选择改变信号

QTableView排序信号?

QTableView点击信号从未发出?

Qt Qtableview没有得到标题项目点击的信号

在 Qt 中为 QTableView 创建弹出菜单

如何在 QTableView 中发出输入单元格和离开单元格的信号