Zurücksetzen Qt-Style-Sheet
Ich habe es geschafft, mein Stil QLineEdit, so etwas wie dieses:
alt-text http://www.kimag.es/share/54278758.png
void Utilities::setFormErrorStyle(QLineEdit *lineEdit)
{
lineEdit->setStyleSheet(
"background-color: #FF8A8A;"
"background-image: url(:/resources/warning.png);"
"background-position: right center;"
"background-repeat: no-repeat;"
"");
}
Rief ich die Funktion mit
Utilities *util = new Utilities;
util->setFormErrorStyle(lineNoStaf);
Die Strömung sollte so etwas wie dieses:
- Benutzer das Formular öffnen
- Nutzer füllen die Daten
- Benutzer Daten übermitteln
- Habe Fehler
- Verwenden
setFormErrorStyle()
- Benutzer Bearbeiten Sie den text im QLineEdit und der Stil verschwinden
Diese Funktion sollte wiederverwendbar sein, immer und immer wieder, aber wie kann ich eine QLineEdit signal, wie textChanged()
um eine Funktion in einer anderen Klasse, der reset-Stylesheet, und trennen Sie dann das signal so, dass es nicht kontinuierlich ausgeführt jedes mal, wenn der text geändert wird ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Allright, das ist nicht kompiliert, sollte aber funktionieren im Prinzip, Sie sollten in der Lage sein, um das Aussehen durch den Aufruf
editWidget->setProperty('isError',true)
odereditWidget->setError(false)
für das stylesheet
den Begriff
schränkt die Anwendung des Stylesheets zu Instanzen der Klasse, deren
<property>
hat die entsprechenden<value>
die einzige Einschränkung ist, dass der Stil ist nicht geändert, wenn sich die Eigenschaft ändert seinen Wert, so dass die stylesheet hat erneut für das Aussehen des widgets zu ändern, siehe Stylesheet-Dokumentation -> Eigenschaft-SelektorDieser Konstruktion bewegt sich das stylesheet in das widget, das es verwendet, und macht die switch-interne widget, das widget ändert sich in übereinstimmung mit dem Staat.
In der Regel haben Sie ein paar Möglichkeiten zum Umgang mit ungültigen Eingaben im Formular
a) beobachten Sie jede änderung, und aktualisieren Sie den Stil entsprechend, Sie sollten in der Lage sein zu verwenden
QValidator
für das auch, aber das ist ein separates Thema, mit QValidator Sie werden wahrscheinlich in der Lage sein, um vollständig zu verinnerlichen, die den Zustand eines einzelnen QTextEdit und sich nicht mit seiner Gültigkeit von außenb) Tun Sie es in der submit-Schleife, die Sie beschrieben haben, wenn der Benutzer klickt auf "Absenden" ändern Sie den Status der richtigen und der falschen Felder
es hängt alles von der Struktur der app und die Ansicht
Qt ermöglicht auch dynamische Eigenschaften in Ihrem stylesheet, das bedeutet, dass Sie nicht brauchen, um code eine eigene Klasse für jeden widget-Typ in Ihrer form.
Vom http://qt-project.org/doc/qt-4.8/stylesheet-examples.html
Customizing Mit Hilfe Von Dynamischen Eigenschaften
Es gibt viele Situationen, in denen wir uns präsentieren müssen ein Formular mit den pflichtfeldern aus. Um dem Benutzer anzuzeigen, dass das Feld verpflichtend ist, eine wirksame (wenn auch ästhetisch zweifelhafte) Lösung ist die Verwendung von gelb als Hintergrundfarbe für diese Felder. Es stellt sich heraus, dies ist sehr einfach zu implementieren mit Qt Style Sheets. Zunächst verwenden wir die folgende Anwendung-breit-style-sheet:
Dies bedeutet, dass jedes widget, dessen mandatoryField Qt-Eigenschaft auf true festgelegt ist, würde haben einen gelben hintergrund.
Dann, für jedes Pflichtfeld widget, würden wir einfach eine mandatoryField Eigenschaft on-the-fly, und legen Sie es auf true. Zum Beispiel:
Funktioniert auch in Qt 4.3!
Sehen, die andere Idee ist, dass Sie brauchen, um überschreiben der paint-evet Linie Bearbeiten Sie und legen Sie dann die hintergrund-Bild und Farbe.
hier die Umsetzung ist presetn hier - button, Folgen Sie den gleichen, um Ihre Linie zu Bearbeiten
QLineEdit
, aber ich kann das problem durch zurücksetzen es wieder mit einer anderen Funktion in verschiedenen Klassen.