如何自动选择所有QTreeWidgetItem小部件

时间:2014-08-10 22:31:04

标签: python pyqt

此代码创建QTreeWidget QComboBoxQLineEdit设置为item widgets(使用setItemWidget()方法)。 单击项目的名称(“Item_1”,“Item_2”等)会使项目“已选中”,但其项目小部件将保持取消选中状态。是否有任何QTreeWidgetItem标志或要设置的属性,因此在单击项目时会自动选择所有项目窗口小部件?

enter image description here

from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])

class Tree(QtGui.QTreeWidget):
    def __init__(self, *args, **kwargs):
        super(Tree, self).__init__()
        for each in ['Item_1','Item_2','Item_3','Item_4','Item_5']:
            item=QtGui.QTreeWidgetItem([each])
            self.addTopLevelItem(item)
            self.setItemWidget(item, 1, QtGui.QComboBox())
            self.setItemWidget(item, 2, QtGui.QLineEdit())
        self.setColumnCount(5)
        self.resize(360,240)
        self.show()

tree=Tree()
sys.exit(app.exec_())

1 个答案:

答案 0 :(得分:1)

单击项目时,您可以实施SIGNAL void itemClicked (QTreeWidgetItem*,int) 1自动选择项目窗口小部件。在这种情况下,我会自动选择QLineEdit

首先,连接void itemClicked (QTreeWidgetItem*,int)的SIGNAL QTreeWidget。 最后,获取当前QTreeWidgetItem的当前小部件,并将其设置为焦点。

import sys
from PyQt4 import QtCore, QtGui

class Tree(QtGui.QTreeWidget):
    ENUM_COMBOBOX = 1
    ENUM_LINEEDIT = 2
    def __init__(self, *args, **kwargs):
        super(Tree, self).__init__()
        for each in ['Item_1','Item_2','Item_3','Item_4','Item_5']:
            item=QtGui.QTreeWidgetItem([each])
            self.addTopLevelItem(item)
            self.setItemWidget(item, self.ENUM_COMBOBOX, QtGui.QComboBox())
            self.setItemWidget(item, self.ENUM_LINEEDIT, QtGui.QLineEdit())
        self.setColumnCount(5)
        self.resize(360,240)
        self.show()
        self.connect(self, QtCore.SIGNAL('itemClicked (QTreeWidgetItem *, int)'), self.itemClickedEvent)

    def itemClickedEvent (self, currentQTreeWidgetItem, column):
        currentQWidget = self.itemWidget(currentQTreeWidgetItem, self.ENUM_LINEEDIT)
        currentQWidget.setFocus()

app = QtGui.QApplication([])
tree=Tree()
sys.exit(app.exec_())

itemClicked方法参考http://pyqt.sourceforge.net/Docs/PyQt4/qtreewidget.html#itemClicked


此致