QSpinBox: Tooltip mit Erklärung, wenn der eingegebene Wert nicht passt

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Atalanttore
User
Beiträge: 341
Registriert: Freitag 6. August 2010, 17:03

Freitag 28. Dezember 2018, 16:33

Hallo

Beim Widget `QSpinBox` kann man im Qt Designer ein `minimum` und ein `maximum` für den gewünschten Wert eingeben. Wenn der Nutzer einen Wert eingeben möchte, der außerhalb des gewünschten Bereichs ist, wird der eingegebene Wert kommentarlos verworfen und es erscheint wieder der vorherige Wert, sobald man etwas anderes in der GUI macht. Ich würde nun gerne einen Tooltip erscheinen lassen, der erklärt, warum der eingegebene Wert nicht passt.

Jedes `QWidget` hat eine Methode `toolTip()`, aber der dort eingegebene Kommentar erscheint nicht bei falschen Eingaben. Die Methode `correctionMode()` der Klasse `QAbstractSpinBox` scheint dafür vorgesehen zu sein, weil `CorrectToPreviousValue` die Standardeinstellung ist, aber einen Tooltip kann man da nicht hinzufügen.

Wie kann man so etwas umsetzen?

Gruß
Atalanttore
__deets__
User
Beiträge: 6178
Registriert: Mittwoch 14. Oktober 2015, 14:29

Samstag 29. Dezember 2018, 12:56

Tooltips sind kein allgemeiner Mechanismus mit beliebiger Semantik wie es dir gerade gefaellt. Die sind explizt fuer Hilfetexte, wenn man ueber dem Control schwebt.

Wenn du eine MessageBox darstellen willst, musst du das selbst tun. ZB indem du dich in das valueChanged-Signal haengst, falls das auch in deinem Fall ausgeloest wird. Oder du versuchst an den Validator zu kommen. Oder du ueberlaedst eine der Methoden der Klasse.
Atalanttore
User
Beiträge: 341
Registriert: Freitag 6. August 2010, 17:03

Samstag 29. Dezember 2018, 16:10

@__deets__: Ist es möglich eine `QMessageBox` in der Form eines Tooltips, also nur ein einfacher Hinweistext ohne Buttons, der nach ein paar Sekunden wieder automatisch verschwindet, an der Position der betreffenden QSpinBox anzuzeigen? Die Beispiele in der Doku sind immer richtige Dialoge mit Buttons.

Gruß
Atalanttore
Antworten