-1

私は Qt4 の初心者ですが、マニュアルやネットで必要な情報が見つからないようです。

DisplayRole、ToolTipRole、DecorationRole の入力に応答する data() メソッドを使用して、非常に単純なデータ モデルを実装しました。私は headerData() メソッドを実装していません (ただし、以下にリストされているものをテストしました)。

モデルを QColumnView で使用すると、列のサイズが固定されます。私のデータモデルのさまざまなノードの幅はかなり異なるため、 data() メソッドから返されたデータに従って QColumnView が列の幅を自動的に設定する方法を探しています。

他の種類のビューで使用できる「setResizeMode()」メソッドが見つかりません。次のようなもので、SizeHintRole の入力ロールを持つ data() から QSize() を返そうとしました:

            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 メソッドを呼び出すと、幅を並べ替えることができます。たとえば、モデル信号をそのようなスロットに接続しようとすると、完了です。スロットは、モデルから実際の幅を計算し、setColumnWidths のリストを準備できます。

于 2012-09-26T09:05:49.340 に答える