-1

我是 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

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

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

4

1 回答 1

0

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

于 2012-09-26T09:05:49.340 回答