2011-12-07 16 views

उत्तर

2

यदि आप का मतलब है कि आप चयनित आइटम को अलग-अलग दिखाना चाहते हैं तो कॉम्बो बॉक्स अपने तत्व दिखा रहा है (यानी "गिराए गए" राज्य में), आप पैलेट में हाइलाइट और हाइलाइट किए गए टेक्स्ट के लिए रंग बदल सकते हैं, या शैली भीतरी QAbstractItemView

#include <QtGui> 

int main(int argc, char **argv) { 
    QApplication app(argc, argv); 

    QComboBox cb; 
    cb.addItem("Item 1"); 
    cb.addItem("Item 2"); 
    cb.addItem("Item 3"); 
    cb.show(); 

    QPalette p = cb.palette(); 
    p.setColor(QPalette::HighlightedText, QColor(Qt::red)); 
    p.setColor(QPalette::Highlight, QColor(Qt::green)); 
    cb.setPalette(p); 

    // OR ... 
    // cb.setStyleSheet("QComboBox QAbstractItemView { " 
    //     "selection-background-color: green; " 
    //     "selection-color: red; }"); 

    return app.exec(); 
} 

तुम सिर्फ अपने "ढह" तत्व की शैली मतलब तो राज्य, मैं तुम क्या हो पर "Customizing QComboBox" उदाहरण के लिए क्यूटी स्टाइल शीट संदर्भ की धारा पर एक नज़र था करने का प्रयत्न।

+0

उत्तर के लिए धन्यवाद! मैं सिर्फ combobox ड्रॉप-डाउन आइटम चयन को बदलने की कोशिश कर रहा हूं। मैं चयन के लिए पृष्ठभूमि रंग का उपयोग नहीं करना चाहता। मैं नीचे सीमा का उपयोग करना चाहता हूँ। मैं QMenu के साथ ऐसा करने में कामयाब रहा: क्यूमेनू :: आइटम { सीमा-तल: 5 पीएक्स ठोस सफेद; मार्जिन: 3 पीएक्स; } क्यूमेनू :: आइटम :: चयनित { सीमा-तल: 5 पीएक्स ठोस काला; मार्जिन: 3 पीएक्स; } और इसे combobox ड्रॉप-डाउन आइटम के साथ करना चाहते हैं ... –

11

समाधान

  • करने के लिए एक ListView वस्तु
  • अपने स्टाइलशीट सेट बनाने
  • ComboBox

यहाँ के मद्देनजर रूप में इसका इस्तेमाल किया जाता है कैसे:

int main(int argc, char *argv[]) 
    { 
    QApplication app(argc, argv); 
    QMainWindow * mainWindow = new QMainWindow(); 
    QComboBox * combo = new QComboBox(mainWindow); 
    QListView * listView = new QListView(combo); 
    combo->addItem("foo"); 
    combo->addItem("bar"); 
    combo->addItem("foobar"); 
    combo->addItem("fooooo"); 

    listView->setStyleSheet("QListView::item {        \ 
          border-bottom: 5px solid white; margin:3px; } \ 
          QListView::item:selected {      \ 
          border-bottom: 5px solid black; margin:3px; \ 
          color: black;         \ 
          }            \ 
          "); 
    combo->setView(listView); 


    mainWindow->show(); 
    app.exec(); 

    return 0; 
    } 

टिप्पणी: मुझे लगता है, according to the Qt docs इस शैली को लागू करने से भी काम करना चाहिए ... लेकिन ऐसा नहीं है।

QComboBox QAbstractItemView::item { 
    border-bottom: 5px solid white; margin:3px; 
} 
QComboBox QAbstractItemView::item:selected { 
    border-bottom: 5px solid black; margin:3px; 
} 
+0

धन्यवाद! लेकिन एक और सवाल ... पतली चयन फ्रेम से छुटकारा पाने के लिए कैसे? उदाहरण देखें: http://vlasovsoft.net/images/1.png –

+5

एक ईवेंट बेहतर समाधान यहां दिखाया गया है http://stackoverflow.com/questions/13308341/qcombobox-abstractitemviewitem?rq=1 – bkausbk

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