【问题标题】:PyQt4 newbie: QColumnView automatically set column width with custom modelPyQt4新手:QColumnView用自定义模型自动设置列宽
【发布时间】:2012-09-17 06:19:34
【问题描述】:

我是 Qt4 新手,但我似乎无法在手册或网上找到我需要的信息:

我实现了一个非常简单的数据模型,其中一个 data() 方法响应 DisplayRole、ToolTipRole 和 DecorationRole 输入。我还没有实现 headerData() 方法(但我测试了下面列出的一个)。

当我将模型与 QColumnView 一起使用时,列的大小是固定的。我的数据模型中各个节点的宽度变化很大,所以我正在寻找一种方法让QColumnView根据data()方法返回的数据自动设置列的宽度。

我找不到任何可用于其他类型视图的“setResizeMode()”方法。我尝试从 data() 返回一个 QSize(),输入角色为 SizeHintRole,如下所示:

            text = str(node.display_name())
            value = QtCore.QSize(len(text)*10,20)

奇怪的是高度似乎被调整了,但列的宽度仍然是恒定的。

我尝试实现如下所示的 headerData 方法:

def headerData(self, index, orientation, role ) :
    ret = QtGui.QHeaderView()
    ret.setResizeMode( QtGui.QtHeaderView.ResizeToContents )
    return ret

但这没有任何效果;我确定标题视图需要以其他方式进行操作和设置,但我无法找出那是什么。

有人可以为新手指出正确的方向吗? 谢谢。

【问题讨论】:

    标签: python qt4 pyqt pyqt4


    【解决方案1】:

    您可以通过调用 setColumnWidths 方法重新排列宽度。 例如,尝试将模型信号连接到这样的插槽,你就完成了。 Slot 可以根据模型计算实际宽度,并为 setColumnWidths 准备列表。

    【讨论】:

    • 我不确定我是否完全理解您的解释。你能给出一两行代码吗?我知道 setColumnWidths() 方法,但我不知道计算用于提供该方法的列的“紧密配合”的方法。谢谢。
    猜你喜欢
    • 2022-10-05
    • 2014-08-13
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 2019-02-28
    • 2012-12-09
    相关资源
    最近更新 更多