4

以下のコードを使用して、カスタム アイコンとサイズ変更されたアイコンを含むQTreeView(with ) がありますが、[サイズ] 列には、次のように間違った配置/位置が表示されます。PyQt4

ここに画像の説明を入力

        self.ui.treeView.setIconSize(QtCore.QSize(30,30))

        fileSystemModel = QtGui.QFileSystemModel(self.ui.treeView)
        custonIconProvider = CustomIconsProvider()
        fileSystemModel.setIconProvider(custonIconProvider)

        self.ui.treeView.setModel(fileSystemModel)
        self.ui.treeView.setRootIndex(fileSystemModel.setRootPath(forlderPath))

        self.ui.treeView.setColumnWidth(0, 250)
        self.ui.treeView.setColumnWidth(1, 70)
        self.ui.treeView.setColumnWidth(2, 70)

http://pyqt.sourceforge.net/Docs/PyQt4/qtreeview.htmlドキュメントで修正の可能性を検索しましたが、明確なものは見つかりませんでした。

4

2 に答える 2

3

これを修正する 1 つの方法は、モデルのdata() メソッドを再実装して、TextAlignmentRole の値に常に AlignVCenter フラグが含まれるようにすることです。

# python3 or sip.setapi('QVariant', 2)

class FileSystemModel(QtGui.QFileSystemModel):
    def data(self, index, role):
        value = super(FileSystemModel, self).data(index, role)
        if role == QtCore.Qt.TextAlignmentRole and value is not None:
            value |= QtCore.Qt.AlignVCenter
        return value

# python2 or sip.setapi('QVariant', 1)

class FileSystemModel(QtGui.QFileSystemModel):
    def data(self, index, role):
        value = super(FileSystemModel, self).data(index, role)
        if role == QtCore.Qt.TextAlignmentRole and value.isValid():
            value = value.toInt()[0] | QtCore.Qt.AlignVCenter
        return value
于 2013-11-27T03:39:04.330 に答える
0

ビュー -> モデル -> setData( index , YOUR_VALUE, Qt::TextAlignmentRole )

于 2013-09-24T15:46:46.743 に答える