2010-12-15 6 views
20

Ich möchte, dass die Benutzer das Standard-Aussehen unserer Anwendungen anpassen können, indem sie einfach ihre OWN Qt Style-Sheet-Dateien laden. Wie schaffen wir das? Kann mir jemand einen Vorsprung geben?Wie könnte Qt Stil aus einer externen Qt Stylesheet-Datei anwenden?

+0

Mit CSS meinen Sie * HTML CSS * Dateien oder * Qt Stylesheets * selbst? – liaK

+1

Qt Stylesheets ... sorry ... lassen Sie mich aktualisieren ... – Owen

Antwort

26

Angenommen, der Benutzer hat sein Stylesheet mit dem Namen stylesheet.qss und befindet sich im Anwendungsordner.

Sie können das Stylesheet laden, wenn Sie die Anwendung starten, die -stylesheet Argument:

>myapp -stylesheet=stylesheet.qss 

Aber dies Ihre Benutzer benötigen zu wissen, wie eine Anwendung mit Argumenten zu starten.

Sie können auch einen Einstellungsdialog in Ihrer App hinzufügen, in dem der Benutzer einen Stylesheet-Pfad auswählen kann.

Anschließend können Sie diese Datei öffnen, den Inhalt laden, und setzen Sie ihn auf Ihrer Anwendung mit QApplication::setStyleSheet():

QFile File("stylesheet.qss"); 
File.open(QFile::ReadOnly); 
QString StyleSheet = QLatin1String(File.readAll()); 

qApp->setStyleSheet(StyleSheet); 

Qt ist ein example online bereitzustellen, die nützlich sein könnten.

+4

könnten Sie angeben, wie (wenn möglich) mehrere Stylesheets verwendet werden sollen? ZB: Ich brauche ein Stylesheet für ein bestimmtes Layout und ein anderes für ein zweites Layout. Ist es möglich, ein Stylesheet mit einem Widget und nicht mit einer App zu verknüpfen? – SKYnine

+0

@SKYnine hast du herausgefunden, wie das geht? (Laden Sie mehrere Stylesheets) –

+0

leider glaube ich nicht, dass Sie können. Ich habe jedoch einen Weg gefunden, mit dem spezifischen Styling umzugehen. Fügen Sie Ihrem gewünschten Objekt einfach eine Eigenschaft hinzu und untergliedern Sie den Stil dann in das Stylesheet (wie eine Klasse). Qt durchläuft alle Standard-Stylesheets und wendet dann die Überschreibungen für bestimmte Elemente an, die dem Eigenschaftsnamen entsprechen. – SKYnine

3

Sie legen das Stylesheet für die gesamte Anwendung basierend auf der vom Kunden bereitgestellten Konfiguration fest.

http://doc.qt.io/qt-5/qapplication.html#styleSheet-prop

Sie könnten setzen/diese Konfiguration aus einem beliebigen Anzahl von Orten bekommen, ein Objekt im Anwendungsdialog ist wahrscheinlich der natürliche Ansatz.

+2

Dead Link und unerheilig Antwort. –