2016-04-17 41 views
1

Ich möchte nur Text der aktuellen QComboBox Auswahl anstelle des gesamten BereichsIst es möglich, nur den Text der aktuellen QComboBox Selection hervorzuheben?

bis zum Pfeil nach unten markiert werden. zu illustrieren besser ich so etwas wie dies wollen: enter image description here

statt dessen: enter image description here

Ist das möglich? Wenn ja wie? Ich habe online gesucht, ein paar Dinge ausprobiert, kann es aber nicht schaffen. Irgendwelche Ideen oder Vorschläge? Danke im Voraus.

Antwort

1

Was Sie beschreiben, ist das Standardverhalten für eine editierbare Combobox. In diesem Fall wählen Sie einfach

QComboBox* box = new QComboBox(); 
box->setEditable(true); 

Wenn Sie nicht möchten, dass Ihre QComboBox editierbar sein, dann ist es nicht intuitiv, aber was Sie wollen immer noch tun erreicht werden kann.

Wenn Sie die QComboBox gesetzt editierbar zu sein, während die zugrunde liegende Linie bearbeitet Einstellung nur, gelesen wird dann die Markierung in Ihrem Bild aussehen wird, aber es wird keine Cursor und der Benutzer wird nicht in der Lage sein, die Combobox-Elemente zu bearbeiten. Hier ein Beispiel:

QComboBox* box = new QComboBox(); 
box->addItems(QStringList() << "None (Min Profit)" << "All (Max Profit)"); 
box->setEditable(true); 
box->lineEdit()->setReadOnly(true); 

// c++11 style, but this can also be done using SIGNAL(...) and SLOT(...) 
connect(box, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), [box] 
{ 
    box->lineEdit()->selectAll(); 
}); 

Und hier ist ein Bild des Ergebnisses (ich bin auf 10 Fenster so das Styling ist ein bisschen komisch)

Working combobox

Meine 2 Cent: Während es kann getan werden, kann das Standard-Qt-Hervorhebungsschema für Ihre Benutzer intuitiver für nicht editierbare Elemente sein.