Seite 1 von 1
QComboBox deaktivieren
Verfasst: 28. November 2008 15:18
von osiris81
Hallo,
Ich möchte eine QComboBox deaktivieren, allerdings nicht mittels setEnabled(false) weil die Anzeige nicht ausgegraut sein soll.
Gib es noch andere Möglichkeiten zu verhindern, dass eine Auswahl getätigt wird (Auswahlfeld verschwindet, durch klicken des Auswahlfelds erscheint kein PopUp, etc.)?
Ein QLineEdit hat z.B. die Methode setReadOnly(bool) um zu verhindern, dass der Inhalt verändert wird (und die Anzeige wird dabei nicht ausgegraut)
Verfasst: 28. November 2008 19:52
von upsala
QComboBox hat nichts in dieser Form. Und um diese Funktion nachzubilden, müßtest du relativ viel Aufwand treiben. Aber warum? Wenn der Benutzer in der ComboBox nichts ändern darf, dann sollte man es ihm auch anzeigen. Und das erledigt doch setEnabled(false).
Verfasst: 1. Dezember 2008 09:17
von osiris81
Hi Upsala,
Danke für deine Antwort! Im gleichen Dialog sind eben neben der ComboBox noch viele QLineEdits und diese sind mittels setReadOnly(...) deaktiviert worden, was sie nicht ausgraut. Konsequenterweise müsste ich dann alle Eingabefelder ausgauen und das möchte ich nicht.
Verfasst: 1. Dezember 2008 10:27
von macman
Immer wieder interessant wie sich Programmierer gegen jedwede Usability entscheiden. Wenn ein Lineedit readOnly ist, dann geht der User davon aus, das dem immer so ist. Ich kann doch nicht eine Box mal editierbar machen und mal nicht, ohne das es optisch sichtbar ist. Soll der User erst jedesmal reinklicken, um zu sehen, ob er Einträge ändern kann oder nicht?
Es gibt Styleguides für Windows und Mac OS. Die beschreiben beide wie Software unter dem jeweiligen BS aussehen sollte usw. Größter Unterschied, beim Mac OS hält man sich dran, bei Win interessiert es keinen.
Verfasst: 1. Dezember 2008 12:47
von osiris81
macman hat geschrieben:Immer wieder interessant wie sich Programmierer gegen jedwede Usability entscheiden....
Deine Antwort hilft mir nun wirklich gar nicht. Da du weder die Anwendung noch den konkreten Einsatz der ComboBox kennst finde ich es unangebracht mir hier einen Vortrag über Usability zu halten.
Wie dem auch sei, ich habe mich dafür entschieden, die ComboBox durch ein QStackedWidget zu ersetzen, welches eine ComboBox und ein LineEdit enthält, soll die Anzeige readOnly sein zeige ich die QLineEdit, ansonsten die QComboBox.
Verfasst: 1. Dezember 2008 13:35
von pfid
Wie wird die ComboBox denn eingesetzt?
Verfasst: 1. Dezember 2008 14:09
von osiris81
Die ComboBox ist Bestandteil einer View-Klasse. Neben der ComboBox sind noch einige QLineEdits (alles zusammen in einer GroupBox). Die View-Klasse kann nun je nach Verwendungszweck als gesamtes read only oder beschreibbar sein. Für ein QLineEdit funktioniert dies auch gut, für die QComboBox leider nicht. Warum ein setReadOnly bei der QLineEdit nun legitimer sein soll als bei einer QComboBox verstehe ich auch nicht.
Wie gesagt habe ich das Problem über den Umweg mit der QStackedWidget gelöst.
Verfasst: 1. Dezember 2008 15:36
von pfid
Ich würde mich da trotzdem macman anschließen und behaupten, dass deine Lösung eher verwirrend ist. Zumal du mit der Groupbox eh schon die Möglichkeit hast, alle Widgets auf einmal ein/auszuschalten.
QPalette
Verfasst: 6. November 2009 18:03
von softwaremaker
Nur als Ergänzung weil ich gleiches Problem habe, dass kein setReadOnly für QComboBox möglich ist. Aber es ist recht einfach über QPalette realisierbar:
QPalette pal;
pal.setColor( QPalette::Disabled, QPalette::Base, Qt::yellow );
//setzt gelb als Hintergrundfarbe für Zustand deaktiviert
m_ui->meineCombobox->setPalette( pal );
//setzt die neue Palette für die ComboBox
und nun ist der Hintergrund gelb bei
m_ui->meineCombobox->setEnabled(false);
Verfasst: 6. November 2009 18:37
von lepsai
macman hat geschrieben:Immer wieder interessant wie sich Programmierer gegen jedwede Usability entscheiden. Wenn ein Lineedit readOnly ist, dann geht der User davon aus, das dem immer so ist. Ich kann doch nicht eine Box mal editierbar machen und mal nicht, ohne das es optisch sichtbar ist. Soll der User erst jedesmal reinklicken, um zu sehen, ob er Einträge ändern kann oder nicht?
Es gibt Styleguides für Windows und Mac OS. Die beschreiben beide wie Software unter dem jeweiligen BS aussehen sollte usw. Größter Unterschied, beim Mac OS hält man sich dran, bei Win interessiert es keinen.
Absolut richtig!