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)
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.