C++ und Qt

Ein einfaches Qt-Programm mit C++

    #include <QCoreApplication>
     
    int main( int argc, char *argv[] )
    {
        QCoreApplication app( argc, argv );
        return app.exec();
    }

  • QCoreApplication ist für Konsolenanwendungen ohne GUI.
  • QApplication ist für GUI-Anwendungen

    Um diesen Code zu kompilieren, musst du sicherstellen, dass dein .pro-File die notwendigen Qt-Module enthält. In diesem Fall brauchst du das widgets-Modul. Füge folgende Zeile zu deiner .pro-Datei hinzu:
QT += widgets

Kompilieren

Es gibt zwei Wege Qt-Programme zu kompilieren: Entweder händisch über die Kommandozeile oder über eine grafische Entwicklungsumgebung. Egal welcher gewählt wird, es sind immer die gleichen Schritte:

  • Qt erzeugt eine systemunabhängige Projektdatei mit dem Namen des aktuellen Verzeichnisses und der Dateiendung .pro. Darin finden sich alle zum Projekt gehörenden Dateien und Einstellungen zur Verwendung von Qt. Wir können auch noch Befehle an den Compiler weitergeben, z.B. mit dem zusätzlichen -Wall-Parameter werden alle Warnungen vom Compiler angezeigt.
  • Mit dem nächsten Befehl wird ein systemabhängiges Makefile erstellt.
  • Schlussendlich wird mit einem Make-Werkzeug das Programm kompiliert. Der genaue Befehl ist abhängig vom verwendeten Tool und Betriebssystem.
  • War der letzte Schritt erfolgreich, haben wir nun eine ausführbare Datei.
Übersicht der Qt-Klassen: https://doc.qt.io/qt-6/qtwidgets-module.html

Um die C++-API eines Qt-Moduls zu verwenden, muss eine Verknüpfung mit der Modulbibliothek hergestellt werden, entweder direkt oder über andere Abhängigkeiten. Mehrere Build-Tools bieten hierfür spezielle Unterstützung, darunter CMake und qmake. Erstellen mit CMake Verwenden Sie den Befehl find_package(), um die benötigte Modulkomponente im Qt6-Paket zu finden:

Erstellen mit qmake Um das Modul für das Erstellen mit qmake zu konfigurieren, fügen Sie das Modul als Wert der QT-Variable in der .pro-Datei des Projekts hinzu:

qmake-Projektfile für ein Qt-Projekt

Beobachtungen

1. Ressourcen-Dateien (.qrc):

  • Nur eine Ressourcen-Datei für das Projekt anlegen.

2. Projektdateien:

  • Nur eine Projektdatei im gleichen Verzeichnis haben

Qt-Projekt kompilieren – Lass uns die Schritte durchgehen:

  1. qmake -project
  • Dieser Befehl erstellt eine neue Projektdatei (.pro) , basierend auf den Quelldateien in deinem Verzeichnis.
  1. qmake
  • Dieser Befehl generiert das Makefile basierend auf der .pro-Datei .
  1. make
  • Dieser Befehl hat ein Projekt kompiliert.

Der Kompilierungsprozess besteht aus zwei Hauptschritten:

a) Kompilierung der Quelldatei:

   g++ -c -pipe -O2 -Wall -Wextra -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I. -I. -I/usr/include/qt5 -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -I. -I/usr/lib64/qt5/mkspecs/linux-g++ -o main.o main.cpp
  • Dies kompiliert main.cpp zu main.o mit verschiedenen Compiler-Flags und Include-Pfaden für Qt.

b) Linking des Programms:

   g++ -Wl,-O1 -o qt main.o   /usr/lib64/libQt5Gui.so /usr/lib64/libQt5Core.so -lGL -pthread
  • Dies verlinkt die Objektdatei main.o mit den Qt-Bibliotheken und erstellt die ausführbare Datei namens qt.

Makefile: Diese Datei wurde von qmake generiert und enthält die Anweisungen zum Kompilieren deines Projekts.

main.cpp: Dies ist die Hauptquelldatei.

main.o: Dies ist die kompilierte Objektdatei von main.cpp.

qt: Dies ist die ausführbare Datei.

qt.pro: Dies ist die Projektdatei, die von qmake verwendet wird.

Um dein Programm auszuführen, musst du einfach die ausführbare Datei qt starten. Du kannst dies tun, indem du folgenden Befehl in deinem Terminal eingibst:

  1. Du kannst dein Programm jetzt mit ./qt ausführen.
  2. Wenn du Änderungen an deinem Code vornimmst, musst du nur make erneut ausführen, um das Programm neu zu kompilieren.
  3. Wenn du neue Dateien hinzufügst oder entfernst, solltest du den Prozess mit qmake -project und qmake wiederholen.

Falls du irgendwelche Probleme beim Ausführen des Programms hast oder weitere Fragen zur Entwicklung mit Qt hast, lass es mich wissen!

TARGET = ApplicationName 
SOURCES += main.cpp 
Widget1.cpp Widget2.cpp 
HEADERS += Widget1.h Widget2.h 
QT += widgets

Erläuterung des Codes

TARGET = ApplicationName

Diese Zeile definiert den Namen der Zielanwendung. Nach dem Kompilieren wird die ausführbare Datei diesen Namen tragen.

SOURCES += main.cpp Widget1.cpp Widget2.cpp

Hier werden die Quellcode-Dateien (.cpp) des Projekts aufgelistet. In diesem Fall haben wir:

  • main.cpp: Üblicherweise die Hauptdatei mit der main()-Funktion
  • Widget1.cpp und Widget2.cpp: Vermutlich Implementierungen von benutzerdefinierten Widgets

HEADERS += Widget1.h Widget2.h

Diese Zeile listet die Header-Dateien (.h) des Projekts auf. Sie enthalten in der Regel die Deklarationen der Klassen, die in den entsprechenden .cpp-Dateien implementiert sind.

QT += widgets

Dies ist eine Qt-spezifische Anweisung, die dem Projekt mitteilt, dass es das Qt Widgets-Modul verwenden soll. Dieses Modul ist für die Erstellung von GUI-Anwendungen mit Qt erforderlich.

Zusammenfassung

Insgesamt definiert dieser Code ein einfaches Qt-Projekt mit einer Hauptanwendung und zwei benutzerdefinierten Widgets. Es verwendet das Qt Widgets-Modul für die GUI-Entwicklung. Dieser Code würde in einer Datei mit der Endung .pro gespeichert werden (z.B. ApplicationName.pro) und von qmake verwendet werden, um die notwendigen Makefiles für die Kompilierung des Projekts zu generieren.

Der QT Creator ist eine Anwendung, mit der man ohne detaillierte Code Eingabe Code erzeugen kann.

erstellter Code:

ausgeführter Code:

Hier sind die wichtigsten Unterschiede zwischen Qt Designer und Qt Creator:

  1. Funktionsumfang:
  • Qt Designer ist ein Tool speziell für den Entwurf und die Erstellung von grafischen Benutzeroberflächen (GUIs) mit Qt Widgets.
  • Qt Creator ist eine vollständige integrierte Entwicklungsumgebung (IDE), die Qt Designer beinhaltet, aber darüber hinaus viele weitere Funktionen für die Entwicklung bietet.
  1. Hauptfokus:
  • Qt Designer konzentriert sich auf das UI-Design.
  • Qt Creator deckt den gesamten Entwicklungsprozess ab, einschließlich Codierung, Debugging und Projektverwaltung.
  1. Eigenständigkeit:
  • Qt Designer kann als eigenständige Anwendung verwendet werden.
  • Qt Creator ist eine umfassende IDE, die Qt Designer integriert.
  1. Funktionen:
  • Qt Designer bietet Drag-and-Drop-Funktionen zum Erstellen von Benutzeroberflächen.
  • Qt Creator bietet zusätzlich einen Code-Editor, Debugging-Tools, Projektverwaltung und vieles mehr.
  1. Zielgruppe:
  • Qt Designer richtet sich primär an UI-Designer.
  • Qt Creator ist für Entwickler gedacht, die den gesamten Entwicklungsprozess abdecken möchten.
  1. Integration:
  • Qt Designer-Dateien (.ui) können in Qt Creator geöffnet und bearbeitet werden.
  • Qt Creator bietet eine nahtlose Integration aller Qt-Entwicklungstools.

Zusammengefasst ist Qt Designer ein spezialisiertes Tool für UI-Design, während Qt Creator eine umfassende Entwicklungsumgebung ist, die Qt Designer als Teil ihrer Funktionalität enthält.