2016-06-17 18 views
0

Ich habe eine GUI-Anwendung mit Qt Widgets geschrieben. Ich habe Versionierung hinzugefügt und ich plane, einen Update-Manager zu schreiben. Damit dies funktioniert, muss der Update Manager die Version meiner App ermitteln können. Ich dachte daran, dies zu implementieren, indem ich meine App mit einem Versionsschalter ausführen und dann die Ausgabe analysieren würde. Ich habe recherchiert und herausgefunden, dass Qt eine Art eingebauter Lösung dafür hat. HierSo drucken Sie die Version einer Qt GUI-Anwendung auf Konsole

ein Beispiel:

#include "mainwindow.h" 
#include <QApplication> 
#include <QCommandLineParser> 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 
    QApplication::setApplicationVersion("1.0.0"); 

    QCommandLineParser parser; 
    auto versionOption = parser.addVersionOption(); 
    parser.process(app); 

    if (parser.isSet(versionOption)) 
    { 
     MainWindow w; 
     w.show(); 
     return app.exec(); 
    } 

    return 0; 
} 

Wenn ich diese App mit einer -v oder --version Befehlszeilenoption starten, erhalte ich eine Message-Box enthält die Versionsinformationen.

Ich muss das gleiche erreichen, nur die Informationen sollten auf Standardausgabe gedruckt werden. Wenn die App mit dem Versionsschalter gestartet wird, sollte sie nur die Version in der Konsole anzeigen und dann schließen.

Wie könnte ich die Versionsinformationen mit einer GUI-App auf die Standard-Konsolenausgabe drucken?

+0

Was ist mit dem Qt Installer Framework? Sie übermittelt die bereitgestellte Anwendung mit Aktualisierungsfunktionen, wie Sie sie von der Qt-Installation kennen. https://doc.qt.io/qtinstallerramework/index.html – maxik

+0

Ich würde eher eine einfache Lösung implementieren, dann Komplexität hinzufügen als mit einem fertigen und versuchen, den Grund für den Code herauszufinden. –

+0

Gut, Ihre Wahl. Dann verwenden Sie eine einfache Textdatei mit der aktuellen Version im Anwendungsverzeichnis. – maxik

Antwort

2

Da wir einige Punkte in den Kommentaren gelöscht haben, gehen wir weiter. ;)

Schauen Sie sich die Dokumentation an (http://doc.qt.io/qt-5/qapplication.html#details). Im Detailabschnitt sehen Sie einen vernünftigen Weg, um Befehlszeilenoptionen korrekt zu parsen und zu handhaben.

Und hier (https://stackoverflow.com/a/3886128/6385043) können Sie eine Möglichkeit zum Schreiben auf Standardausgabe sehen. Beachten Sie die QDebug Einschränkung.

Meiner Meinung nach, halten Sie sich an die Textdatei. Sie können es während des Builds mit qmake unter Verwendung der Variablen VERSION generieren, die Sie auch mit QApplication::setApplicationVersion(QString) verwenden können.

+0

Ja. Ich habe einige Nachforschungen angestellt und dies scheint die beste Methode bisher zu sein. –

+1

Gute Sache mit Qt ist, Forschung zu tun funktioniert, weil es Dokumentation gibt. ;) – maxik