2014-04-26 5 views
5

मैंने अभी wxPython से PyQT पर स्विच किया है और मुझे QTreeview के साथ कुछ परेशानी हो रही है। मेरे पास एक QTreeview है जो विस्तारित वर्गों में वर्गीकृत डेटा प्रदर्शित करेगा, लेकिन इस TreeView में डेटा संपादन योग्य नहीं होना चाहिए, लेकिन मुझे उपयोगकर्ता को डेटा चुनने में सक्षम होना चाहिए (डबलक्लिंग किसी अन्य विधि को निष्पादित करने जा रहा है)। मैं निश्चित नहीं हूं कि इसे कैसे पढ़ा जाए लेकिन चुनने योग्य भी। मैं डेटा को पकड़ने के लिए QStandardItem के साथ QStandardItemModel का उपयोग कर रहा हूं।पीईक्यूटी - आप एक QTreeview uneditable कैसे चुन सकते हैं लेकिन चयन योग्य भी?

किसी भी मदद की बहुत सराहना की जाएगी।

उत्तर

11

आप

my_treeview.setEditTriggers(QAbstractItemView.NoEditTriggers) 

बुला डिफ़ॉल्ट treeview अनुमति चाहिए द्वारा द्वारा ऐसा करने से असंपादित होने के लिए अलग-अलग आइटम सेट जब आप QSandardItem

item = QStandardItem('my_item_text') 
item.setEditable(False) 

बना सकते हैं आप पूरे treeview के लिए संपादन अक्षम कर सकते हैं आप वस्तुओं का चयन करने के लिए, लेकिन यदि आप डिफ़ॉल्ट व्यवहार को बदलना चाहते हैं तो आप पेड़दृश्य के setSelectionMode() और setSelectionBehavior() विधियों को देखना चाहेंगे (अच्छी तरह से वे QAbstractItemView के लिए हैं जो QTreeView से विरासत)। इन विधियों के लिए C++ दस्तावेज़ here पाया जा सकता है जिसे मैं आमतौर पर पीईक्यूटी दस्तावेज पर उपयोग करता हूं क्योंकि यह अक्सर अधिक पूर्ण होता है, और पाइथन कोड में अनुवाद करना बहुत मुश्किल नहीं है। :: के सभी उदाहरणों को बस . के साथ प्रतिस्थापित करें)

+1

त्वरित प्रतिक्रिया के लिए धन्यवाद! यह सिर्फ काम करता था मुझे इसकी आवश्यकता थी। मैंने यह भी पाया कि आप इस 'item.setFlags (QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsEelectable) जैसे कुछ कर सकते हैं और यह आपको वही व्यवहार देगा। लेकिन एक बार में पूरे वृक्षदृश्य के लिए संपादन की अक्षमता बेहतर है। – HawksFan21

+1

कोई समस्या नहीं! मुझे यकीन है कि 'item.setEditable() 'wraps' item.setFlags() 'कम स्तर पर, लेकिन झंडे के मौजूदा सेट को ओवरराइट किए बिना संपादन से संबंधित नहीं है। –

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