2009-02-05 13 views
5

मैं QTableWidget में कुछ मानों का चयन करने के लिए एक पॉपअप मेनू दिखा रहा हूं। सबसे कम आइटम "संशोधित सूची" प्रविष्टि है, जब मैं इसे चुनता हूं तो एक नई विंडो स्वचालित रूप से दिखाई देनी चाहिए और QComboBox गायब हो जाना चाहिए और सेल एक Qt :: DisplayRole स्थिति पर वापस आना चाहिए।मैं सेल को संपादित करने के लिए QTableWidget कैसे बता सकता हूं?

:

अब क्यूटी QTableWidget.edit() और QTableWidget.editItem() की तरह उन सभी अच्छा एपीआई-कॉल, क्या मैं वास्तव में के लिए देख रहा हूँ एक QTableWidget.endEditing(),, है अधिमानतः सेल के सूचकांक निर्दिष्ट किए बिना हालांकि मैं इस कॉल का उपयोग कर कि मिल सके

table.currentIndex() 

... लेकिन मैं नहीं जानता कि अगर मैं गारंटी ले सकते हैं कि वर्तमान सेल सेल हर समय संपादित किया जा रहा है।

क्या ऐसे एपीआई को बंद करने के लिए कोई एपीआई है?

Popup menu

उत्तर

7

QTableWidget QWidget से 19 सार्वजनिक स्लॉट्स इनहेरिट करती है। उनमें से एक setDisabled() है, जो उस विजेट और उसके सभी बच्चों के लिए इनपुट ईवेंट अक्षम करना चाहिए।

मैं कोशिश करेंगे:

table.setDisabled(true); 
table.setDisabled(false); 

यद्यपि आप ने कहा कि यह आप के लिए काम नहीं करता है, वहाँ एक वैकल्पिक पद्धति है: आपको लगता है कि पसंद नहीं है (टेबल, ध्यान खो देता है मेरा मानना ​​है कि), तो आपको EditTriggers का उपयोग करने का प्रयास कर सकते हैं। उदाहरण के लिए:

table.setEditTriggers(QAbstractItemView::NoEditTriggers); 
+0

साथ, जबकि उप प्रपत्र दिखाई दे रही थी, आपका पहले एक ने काम किया, दूसरा नहीं। इससे कोई फर्क नहीं पड़ता कि यह फोकस खो देता है क्योंकि मैं एक मॉडल संवाद दिखाता हूं। यदि कोई भी अधिक प्राकृतिक समाधान का प्रस्ताव नहीं दे रहा है तो मैं इस उत्तर को सही के रूप में चिह्नित करूंगा। –

+0

मैंने अभी संपादन संपादकों का परीक्षण करने के लिए एक उदाहरण निकाल दिया है और यह काम करता है (सी ++, क्यूटी 4.4.3)। मैं प्रत्येक सेल पर क्लिक कर सकता हूं और ऐसे में लेकिन मैं संपादन या कुछ भी करने के लिए उन पर डबल क्लिक नहीं कर सकता। मुझे नहीं पता कि यह आपके लिए क्यों काम नहीं करता है। * शग * –

+0

यह संपादक को बंद करने के बारे में है, इसे संपादित करने में सक्षम नहीं है। अगली बार एक डबल क्लिक पर इसे फिर से संपादक खोलना चाहिए। –

1

आप QTableWidget.closePersistentEditor उपयोग करने में सक्षम हो सकता है() संपादक को बंद करने के लिए। हालांकि, QAbstractItemView.closeEditor() जो आप चाहते हैं उसके करीब हो सकता है, खासकर जब से आप QModelIndex- आधारित API के साथ सहज महसूस करते हैं और पहले ही एक कस्टम संपादक विजेट का उपयोग कर रहे हैं।

2

table.setCurrentItem(None) क्या मेरे लिए काम किया है। (यदि आप कुछ सेल चेंज/आइटम चेंज स्लॉट फ़ंक्शन का उपयोग करते हैं तो संकेतों को अवरुद्ध करना न भूलें।)

यह पीईक्यूटी के साथ है। सी ++ के लिए मुझे लगता है कि शून्य के साथ कोई भी नहीं बदलें।

0

मैं सूची विजेट के लिए बात नहीं कर सकता। लेकिन, मैं यहाँ कुछ ऐसा करने की कोशिश कर रहा था।

मैं एक सूची के साथ एक उप-प्रपत्र को लाने को डबल क्लिक करके एक सेल, और स्तंभ के आधार पर किया गया था, फिर जब कि चयनित मूल्य के आधार पर अगले उचित कॉलम को बंद कदम था।

मेरे समस्या मैं सेल में मान मिलता है और अगले उचित सेल "का चयन करें" कर सकता था, लेकिन मूल सेल संपादन मोड में चयनित रहने लगा!

यह अंततः मुझ पर लगा कि मेरी डबल क्लिक करें सेल को चुनकर किया गया था, यानी। संपादन।

एक एकल क्लिक सेल का चयन करता है, लेकिन एक संपादन मोड नहीं खोलता है।

साइड नोट: कभी सही मायने में मोडल कार्य करने के लिए है कि उप प्रपत्र मिल सकता है, तो मैं बुला रूप में एक पाश बनाया: केवल कोड जा रहा है app.processEvents()

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

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