小编ash*_*und的帖子

如何在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)会扩展第一列,但它似乎没有任何效果.设置列宽的正确方法是什么?

python pyqt pyqt4 qtreeview

12
推荐指数
2
解决办法
2万
查看次数

获取QTreeView中当前选定的项目

我在QTreeView中有很多项目.每个项目都使用此类生成:

class Branch(QStandardItem):
    def __init__(self, label, uri = None):
        QStandardItem.__init__(self, label)
        self.uri = uri
Run Code Online (Sandbox Code Playgroud)

这是我的实际树:

class FileTree(QTreeView):
    def __init__(self):
        QTreeView.__init__(self)
    def keyPressEvent(self, event):
        if event.key() == Qt.Key_Space or event.key() == Qt.Key_Return:
            crawler = self.selectedIndexes()[0].model().item(self.selectedIndexes()[0].row())
            print(crawler.uri)
        QTreeView.keyPressEvent(self, event)
Run Code Online (Sandbox Code Playgroud)

如您所见,我对如何从所选项目中获取uri变量有点不确定.我发现selectedIndexes()返回模型而不是项目本身.我不知道如何从一个到另一个.尝试使用项目编号self.selectedIndexes()[0].row()是在黑暗中拍摄的一点点,但它似乎忽略了树中的各个分支(例如,它会给我0一个分支中的第一行,但不会告诉我我关于它的分支的任何事情.

从QTreeView获取所选项目的正确方法是什么?或者有没有更好的方法来检测空格键或返回键被击中,这将使这更容易?Qt的Python文档严重缺乏,所以很难知道我是不是以一种敏感的方式做事.

python qt

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

python ×2

pyqt ×1

pyqt4 ×1

qt ×1

qtreeview ×1