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

2024-06-17 11:41:12 发布

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

{{{cd2>使用这个方法创建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_())

Tags: 项目方法selftreeapp属性init标志
1条回答
网友
1楼 · 发布于 2024-06-17 11:41:12

您可以实现的信号void itemClicked (QTreeWidgetItem*,int)当项目被单击时,它的项目小部件将被自动选择。在本例中,我自动选择QLineEdit。在

首先,连接QTreeWidget的信号void itemClicked (QTreeWidgetItem*,int)。 最后,从current QTreeWidgetItem获取current iten widget并设置焦点。在

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


谨致问候

相关问题 更多 >