python - 如何设置 QTreeView 的列宽?

标签 python user-interface pyqt pyqt4 qtreeview

请耐心等待,我对 QT 还是个新手,无法理解它是如何做事的。

我已经创建并填充了一个包含两列的 QTreeView:

class AppForm(QMainWindow):
    def __init__(self, parent = None):
        super(AppForm, self).__init__(parent)
        self.model = QStandardItemModel()
        self.view = QTreeView()
        self.view.setColumnWidth(0, 800)
        self.view.setEditTriggers(QAbstractItemView.NoEditTriggers)
        self.view.setModel(self.model)
        self.setCentralWidget(self.view)

一切都很好,除了列非常窄。我希望 setColumnWidth(0, 800) 会加宽第一列,但它似乎没有任何效果。设置列宽的正确方法是什么?

最佳答案

当您调用 setColumnWidth 时,Qt 将执行以下操作:

self.view.header().resizeSection(column, width)

然后,当您调用 setModel 时,Qt 将(除其他事项外)执行以下操作:

self.view.header().setModel(model)

因此列宽确实得到设置 - 只是不在 TreeView 最终的模型上。

tl;dr:设置模型后设置列宽。

编辑

这是一个基于您的示例的简单演示脚本:

from PyQt4 import QtGui, QtCore

class Window(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        self.model = QtGui.QStandardItemModel()
        self.view = QtGui.QTreeView()
        self.view.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
        self.view.setModel(self.model)
        self.setCentralWidget(self.view)
        parent = self.model.invisibleRootItem()
        for item in 'One Two Three Four'.split():
            parent.appendRow([
                QtGui.QStandardItem(item),
                QtGui.QStandardItem(),
                QtGui.QStandardItem(),
                ])
        self.view.setColumnWidth(0, 800)

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

关于python - 如何设置 QTreeView 的列宽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8364061/

相关文章:

python - 为什么来自 s3 的 dask read_csv 保留了这么多内存?

python - 'OneToOneField' 的实例没有 'username' 成员

java - 如何在 Java 中平滑地移动图形对象 360 度?

python - guizero/tkinter PushButton NameError 来自 guizero PushButton.py

python - 如何为 href 指定方法名称?

python - 如何使用 python3 安装 selenium?

通过python脚本进行Php质因数分解

javascript - 如何设置临时填充?

python - 如何从接口(interface)获取物理接口(interface) IP 地址

python - 如何将 pyqt4 与当前的 python 和spyder 版本一起使用?