2017-07-27 2 views
0

Ich habe eine Probe Qt-Anwendung entwickelt. Meine Anwendung läuft nur, wenn wir zuerst den Befehl im Terminal ausführen.Set System Environment Variable vor Qt-Anwendung starten

export QT_X11_NO_MITSHM=1 

Wenn wir oben Variable nicht exportieren und Anwendung starten („./test“), dann öffnen sie das Fenster, aber es hat etwas Farbe Rendering-Problem.

Kann jemand vorschlagen, wie können wir diese Variable aus der Anwendung selbst setzen, anstatt extern von Terminal gesetzt?

Vielen Dank im Voraus.

+1

Vielleicht hilft das Starten der Anwendung von einem Shell-Skript? Skript wird die Umgebung festlegen und die ausführbare Datei starten. – vahancho

+0

Indem Sie ein Skript mit Ihrer App bereitstellen, das 'QT_X11_NO_MITSHM = 1 path/to/real/app $ @' enthält? – fghj

+0

Skript wird die Lösung sein, aber ich möchte es mit der Anwendung tun, wenn möglich. – Neel

Antwort

1

Ich würde empfehlen, qputenv() zu verwenden, um es hinzuzufügen, bevor Sie das QApplication in main() erstellen. Einige der ENV vars müssen gesetzt werden, bevor Qt beginnt zu laden, weil sie im globalen Zustand verwendet werden, ich bin nicht sicher, ob die X11 mit qputenv() arbeiten, aber das ist der beste Weg, sie in der Codebasis einzuführen. QtGlobal::qputenv documentation.