ash*_*und 12 python 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)
Run Code Online (Sandbox Code Playgroud)
一切都很好,除了列非常狭窄.我希望setColumnWidth(0,800)会扩展第一列,但它似乎没有任何效果.设置列宽的正确方法是什么?
ekh*_*oro 18
当你打电话时setColumnWidth,Qt会做相当于:
self.view.header().resizeSection(column, width)
Run Code Online (Sandbox Code Playgroud)
然后,当你打电话时setModel,Qt将(除其他外)做相当于:
self.view.header().setModel(model)
Run Code Online (Sandbox Code Playgroud)
因此,列宽确实已设置 - 只是不在树视图最终的模型上.
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_())
Run Code Online (Sandbox Code Playgroud)
小智 9
self.view.resizeColumnToContents(0)
Run Code Online (Sandbox Code Playgroud)
这可确保将给定列的宽度和高度设置为与内容匹配.
| 归档时间: |
|
| 查看次数: |
18133 次 |
| 最近记录: |