在一个Qtreewidget中获取位置并将另一个扩展到同一个p

2024-05-28 20:39:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我的QT应用程序中有两个QTreeWidgets,使用python(PyQt4)。在

我想

手动将TreeWidget 1展开到项目,然后。 如果此项目在树视图2中,请将树视图2扩展到同一项目。在

原因是我有2个标签,每个标签上都有一个树状图。在

你需要原谅我,我不是一个有经验的程序员,一直在挣扎。在

谢谢


Tags: 项目视图应用程序原因标签经验手动qt
1条回答
网友
1楼 · 发布于 2024-05-28 20:39:38

这个问题对细节有点轻描淡写,因为它没有指定什么是“相同”的项目,也没有说明哪些项目可以扩展。在

但是,这个简单的演示脚本应该提供一个合理的起点:

from PyQt4 import QtGui, QtCore

class Window(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.tree1 = QtGui.QTreeWidget(self)
        self.tree2 = QtGui.QTreeWidget(self)
        layout = QtGui.QHBoxLayout(self)
        for tree in (self.tree1, self.tree2):
            tree.header().hide()
            tree.itemExpanded.connect(self.handleExpanded)
            tree.itemCollapsed.connect(self.handleCollapsed)
            for text in 'one two three four'.split():
                item = QtGui.QTreeWidgetItem(tree, [text])
                for text in 'red blue green'.split():
                    child = QtGui.QTreeWidgetItem(item, [text])
            layout.addWidget(tree)

    def handleExpanded(self, item):
        self.syncExpansion(item, True)

    def handleCollapsed(self, item):
        self.syncExpansion(item, False)

    def syncExpansion(self, item, expand=True):
        if item is not None:
            tree = item.treeWidget()
            if tree is self.tree1:
                tree = self.tree2
            else:
                tree = self.tree1
            text = item.text(0)
            for other in tree.findItems(text, QtCore.Qt.MatchFixedString):
                other.setExpanded(expand)

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.setGeometry(300, 500, 300, 300)
    window.show()
    sys.exit(app.exec_())

相关问题 更多 >

    热门问题