2012-08-26 13 views
9

मुझे अपने चुने हुए QTreeWidgetItem को हटाने का एक आसान तरीका खोजने में निराशाजनक रूप से मुश्किल लग रही है।PyQt में QTreeWidgetItem हटाएं?

मेरे पैचवर्क विधि current और उसके बाद के लिए पेड़ की वर्तमान चयन की स्थापना शामिल है:

if current.parent() is not None: 
    current.parent().removeChild(current) 
else: 
    self.viewer.takeTopLevelItem(self.viewer.indexOfTopLevelItem(current)) 

यह भयानक नहीं है, लेकिन वहाँ एक आदेश है कि सीधे ऊपर सिर्फ आइटम को हटा नहीं है?

root = tree.invisibleRootItem() 
for item in tree.selectedItems(): 
    (item.parent() or root).removeChild(item) 
+0

मेरा मानना ​​है कि आपका सही तरीका है। सी ++ में आप आइटम को आसानी से हटा सकते हैं, इसलिए इसके विनाशक का आह्वान कर सकते हैं, और यह आइटम को विजेट से हटा देगा। लेकिन मुझे नहीं लगता कि पाइथन से ऐसा करने का सीधा तरीका है। – Avaris

उत्तर

10

QTreeWidget वर्ग एक invisibleRootItem() समारोह जो कुछ हद तक एक neater दृष्टिकोण के लिए अनुमति देता है

import sip 
... 
sip.delete(current) 

PySide के लिए बाध्यकारी जनरेटर, shiboken, a similar module है।

4

PyQt4, क्यूटी कक्षाओं के लिए अजगर बाइंडिंग उत्पन्न करने के लिए घूंट का उपयोग करता है ताकि आप ++ the sip python API के माध्यम से स्पष्ट रूप से आपत्ति सी नष्ट कर सकते हैं:

+0

अच्छा +1। मुझे यह नहीं पता था। – Avaris

+0

मैं भविष्य में इसका उपयोग करूंगा, लेकिन मैं दूसरे जवाब के साथ चला गया। हालांकि धन्यवाद! – RodericDay

 संबंधित मुद्दे