2011-10-03 10 views
11

नियमित QComboBox आइटमों के साथ आबादी का उपयोग करते हुए, currentIndex-1 पर सेट है, विजेट खाली है। इसके बजाय कॉम्बो बॉक्स में एक प्रारंभिक वर्णनात्मक पाठ दिखाई दे सकता है (उदाहरण के लिए "- चयन देश -", "- चुनें विषय -", आदि) जो ड्रॉपडाउन सूची में नहीं दिखाया गया है।QComboBox पर गैर-चयन योग्य डिफ़ॉल्ट टेक्स्ट कैसे सेट करें?

मुझे प्रलेखन में कुछ भी नहीं मिला, न ही उत्तर के साथ पिछले प्रश्न।

उत्तर

21

ऐसा नहीं लगता है कि कॉम्बो बॉक्स एपीआई में यह अनुमान लगाया गया था। लेकिन अंतर्निहित मॉडल लचीलेपन के साथ यह आप पहली बार एक "वैध" आइटम के रूप में अपने --लेबल Country-- जोड़ने के लिए, और फिर इसे उपयोगकर्ता चयन किया जा रहा से रखने के लिए सक्षम होना चाहिए लगता है:

QStandardItemModel* model = 
     qobject_cast<QStandardItemModel*>(comboBox->model()); 
QModelIndex firstIndex = model->index(0, comboBox->modelColumn(), 
     comboBox->rootModelIndex()); 
QStandardItem* firstItem = model->itemFromIndex(firstIndex); 
firstItem->setSelectable(false); 

पर निर्भर करता है क्या सटीक व्यवहार जो आप चाहते हैं, आप इसके बजाय setEnabled का उपयोग करना चाह सकते हैं। या मैं व्यक्तिगत रूप से यह चाहते हैं तो यह सिर्फ एक अलग रंग आइटम कि मैं इसे वापस करने के लिए सेट कर सकता था:

Qt, How do I change the text color of one item of a QComboBox? (C++)

(जब मैं कुछ पर क्लिक करें और फिर करने के लिए फंस जाते हैं मैं यह पसंद नहीं है जहां मैं वापस नहीं जा सकता, जहां भी मैं कुछ भी चयनित-अभी-राज्य नहीं है!)

+0

उत्कृष्ट! स्पष्ट रूप से क्यूटी का एक हिस्सा है जिसे मैंने छुआ नहीं है, जो अनुकूलन के लिए बहुत उपयोगी लगता है। आपके द्वारा लिंक किए गए SO प्रश्न से, पृष्ठभूमि रंग को बदलने से यह बहुत अच्छा लग रहा है, और संभवत: मैंने जो मूल रूप से कल्पना की थी उससे बेहतर है। firstItem-> setData (Qt :: lightGray, Qt :: BackgroundRole); (अगर आप इसे अपने उत्तर में जोड़ते हैं तो मुझे कोई फर्क नहीं पड़ता)। – swalog

+0

@EXIT_FAILURE मुझे लगता है कि आपकी टिप्पणी में आपका विकल्प शामिल है, क्योंकि मैंने इसे आजमाया नहीं है, इसलिए मुझे नहीं पता कि मुझे यह पसंद है या नहीं। :) लेकिन हाँ, क्यूटी कुछ मौलिकता प्रदान करता है, अगर हम सभी गिरोह हो तो हम जीटीके और wxwidgets को रोक सकते हैं! : -/http://stackoverflow.com/questions/7545804/modeless-parentless-wxdialog-still-always-above-wxframe-window-in-z-order/ – HostileFork

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