如何根据已知的ItemWidget获取QTreeWidgetItem
在创建了一个文本输入框(LineEdit)控件之后:
lineEdit=QtGui.QLineEdit()
并把它作为一个项目控件(itemWidget)分配给了 QTreeWidgetItem
:
tree=QtGui.QTreeWidget()
item=QtGui.QTreeWidgetItem(tree)
tree.setItemWidget(item, 0, lineEdit)
现在我知道了 lineEdit
这个变量,我该怎么查询它被分配给了哪个 QTreeWidgetItem
作为项目控件呢?
1 个回答
1
最后编辑时间 : 2014年12月8日 9:12
我的解决方案是创建一个自己的方法,通过部分参数 QWidget
来查找 QTreeWidgetItem
,像这样(使用递归函数);
class customQTreeWidget (QtGui.QTreeWidget):
.
.
.
def findItemWidget (self, findQWidget, currentQTreeWidgetItem = None):
if currentQTreeWidgetItem == None:
currentQTreeWidgetItem = self.invisibleRootItem()
for index in range(self.topLevelItemCount()):
if findQWidget is self.itemWidget(currentQTreeWidgetItem, index):
return currentQTreeWidgetItem
for index in range(currentQTreeWidgetItem.childCount()):
foundQWidget = self.findItemWidget(findQWidget, currentQTreeWidgetItem.child(index))
if foundQWidget != None:
return foundQWidget
然后,你想要调用的时候可以这样使用;
foundQTreeWidgetItem = self.findItemWidget(findQWidget) # Don't part argument currentQTreeWidgetItem use in recursive loop
itemWidget 方法参考 : http://pyqt.sourceforge.net/Docs/PyQt4/qtreewidget.html#itemWidget
祝好,