Qt 6 Teil 4: Grundlegende Konzepte erklärt

Qt 6 Teil 4: Grundlegende Konzepte erklärt

Qt ist ein plattformübergreifendes C++-Anwendungsentwicklungsframework, das einen umfangreichen Satz an Tools und Bibliotheken bereitstellt, mit denen Entwickler schnell plattformübergreifende Anwendungen für die Entwicklung grafischer Benutzeroberflächen (GUI) und Nicht-GUI-Anwendungen erstellen können.

Qt 6 Teil 1: Einführung, Installation und einfache Verwendung https://blog.csdn.net/cnds123/article/details/130730203

Qt 6 Teil 2: Projektstruktur und Verwendung von Ressourcendateien https://blog.csdn.net/cnds123/article/details/130741807

Qt 6 Teil 3: Projektveröffentlichung https://blog.csdn.net/cnds123/article/details/130827966

Qt Creator ist eine plattformübergreifende integrierte Entwicklungsumgebung (IDE), die hauptsächlich für die Entwicklung von Qt-Anwendungen verwendet wird.

Überblick über das Build-System von Qt Creator

Qt Creator unterstützt mehrere Build-Systeme, von denen jedes seine eigenen Eigenschaften und Verwendungsmöglichkeiten hat.

Konfigurationsdateien für verschiedene Build-Systeme:

Qmake ist eine .pro-Datei (Anwendungsname.pro)

CMake ist die Datei CMakeLists.txt

Qbs ist eine .qbs-Datei (Anwendungsname.qbs)

Hier ist eine Übersicht über das Build-System:

QMake

QMake ist das traditionelle Build-System von Qt, das einfache .pro- (Projekt) und .pri- (include) Dateien verwendet, um den Build-Prozess des Projekts zu definieren.

Merkmale :

  • Eng integriert mit Qt.
  • Leicht zu erlernen und für kleine bis mittelgroße Projekte geeignet.
  • Makefile wird automatisch generiert und bietet eine gute plattformübergreifende Unterstützung.

Verwendung :

  1. Erstellen Sie eine .pro-Datei, um die Dateien, Bibliotheksabhängigkeiten und andere Build-Parameter im Projekt zu definieren.
  2. Öffnen Sie die .pro-Datei in Qt Creator und die IDE übernimmt automatisch die Build-Konfiguration.
  3. Entwickeln Sie Anwendungen mithilfe der Build-, Ausführungs- und Debugfunktionen von Qt Creator.

Eine einfache .pro-Datei könnte so aussehen:

QUELLEN += main.cpp MyWidget.cpp

HEADERS += MyWidget.h

QT += Widgets

In Qt Creator wird das Öffnen einer .pro-Datei automatisch als QMake-Projekt erkannt. Sie können das Build-Verzeichnis, Compiler-Optionen usw. in den Projekteinstellungen ändern. Es ist zu beachten, dass neue Versionen von Qt Creator wie Version 10.0.1 die QMake-Option beim Erstellen eines neuen Projekts nicht mehr bereitstellen.

CMake

CMake ist ein plattformübergreifendes Open-Source-Build-System, das CMakeLists.txt-Dateien verwendet, um den Build-Prozess zu definieren. Derzeit verwendet die neue Version von Qt Creator dies standardmäßig.

Merkmale :

  • Unterstützt komplexe Projektstrukturen und Großprojekte.
  • Leistungsstarke Modul- und Skriptunterstützung.
  • Generieren Sie native Build-Dateien plattformübergreifend, z. B. Makefile, Ninja, Visual Studio-Projekte usw.

Verwendung :

  1. Erstellen Sie eine CMakeLists.txt-Datei und verwenden Sie CMake-Befehle, um Projekterstellungsregeln zu definieren.
  2. Öffnen Sie das Projekt in Qt Creator und geben Sie CMake als Build-System an.
  3. Entwickeln Sie Anwendungen mithilfe der Build-, Ausführungs- und Debugfunktionen von Qt Creator.

Eine einfache CMakeLists.txt-Datei könnte so aussehen:

cmake_minimum_required(VERSION 3.5)

Projekt (MyApp VERSION 1.0)

set(CMAKE_CXX_STANDARD 11)

set(CMAKE_CXX_STANDARD_REQUIRED True)

add_executable(MyApp main.cpp)

In Qt Creator wird das Öffnen der Datei CMakeLists.txt automatisch als CMake-Projekt erkannt. Sie können das Build-Verzeichnis, den CMake-Generator usw. in den Projekteinstellungen ändern

Qbs

QbsQbs (Qt Build System) ist ein neues Build-Tool, das von Qt als Ersatz für QMake entwickelt wurde.

Merkmale :

  • Regelbasierte Konfiguration, moderner und flexibler.
  • Plattformübergreifend, unterstützt parallele Builds und inkrementelle Builds.
  • Integriert in Qt-Module und andere Toolchains.

Verwendung :

  1. Erstellen Sie eine .qbs-Datei, um die Projekterstellungslogik und -abhängigkeiten zu definieren.
  2. Wählen Sie Qbs als Build-System in Qt Creator aus.
  3. Konfigurieren Sie Build-Einstellungen und entwickeln Sie mit den Funktionen von Qt Creator.

Eine einfache .qbs-Datei könnte so aussehen:

Projekt {

  Name: „MeineApp“

  Dateien: „main.cpp“

  Hängt von {Name: „cpp“} ab

}

In Qt Creator wird das Öffnen einer .qbs-Datei automatisch als Qbs-Projekt erkannt. Sie können das Build-Verzeichnis, Compiler-Optionen usw. in den Projekteinstellungen ändern.

Für die von Qt Creator unterstützten Build-Systeme generiert Qt Creator automatisch entsprechende Build-Konfigurationsdateien, z. B. .pro-Dateien (qmake), CMakeLists.txt-Dateien (CMake) usw. Sie können diese Dateien direkt in Qt Creator bearbeiten oder einen externen Editor verwenden, um Änderungen vorzunehmen. In den meisten Fällen werden diese Dateien automatisch generiert, wenn das Projekt zum ersten Mal erstellt wird, und in den meisten Fällen müssen Sie diese Dateien wahrscheinlich nicht manuell ändern. Dies liegt daran, dass Qt Creator eine grafische Möglichkeit zum Verwalten dieser Einstellungen bietet, z. B. das Hinzufügen oder Entfernen von Quelldateien und Bibliotheken, das Festlegen von Compiler-Flags usw. über die Seite mit den Projekteigenschaften. Diese Änderungen werden automatisch in der Build-Konfigurationsdatei widergespiegelt. Beachten Sie, dass Sie nach Änderungen an der Build-Konfigurationsdatei den Build-Prozess testen sollten, um sicherzustellen, dass alles wie erwartet funktioniert.

Überblick über die Qt- Methode zum Erstellen von C++-GUI- Anwendungen

In Qt gibt es zwei Hauptmethoden zum Erstellen von C++-GUI-Anwendungen:

1. Verwenden Sie Qt-Tools

☆Wenn Sie Qt-Widgets verwenden, können Sie den Designer in Qt Creator verwenden, um die Steuerelemente visuell zu entwerfen und anzuordnen, und dann C++-Code verwenden, um die Logik zu schreiben.

☆Wenn Sie Qt Quick verwenden, können Sie Qt Quick Designer in Qt Creator verwenden, um die QML-Schnittstelle visuell zu entwerfen und zu gestalten, und dann C++-Code zum Schreiben von Logik verwenden.

☆Wenn Sie Qt Quick Controls 2 verwenden, können Sie Qt Quick Designer und Qt Quick Controls Gallery in Qt Creator verwenden, um Steuerelemente visuell zu entwerfen und anzuordnen, und dann C++-Code zum Schreiben von Logik verwenden.

Qt Widgets, Qt Quick und Qt Quick Controls 2 sind verschiedene UI-Module (Sammlungen von Komponenten) im Qt-Framework, die zum Erstellen verschiedener Arten von Benutzeroberflächen verwendet werden.

Qt Widgets ist eine Sammlung von Klassen im Qt-Framework. Sie stellen verschiedene GUI-Elemente wie Schaltflächen, Schieberegler, Textfelder usw. dar und eignen sich zum Erstellen herkömmlicher Desktop-Anwendungen.

Qt Quick ist eine moderne, dynamische Benutzeroberflächentechnologie auf Basis von QML. Es bietet eine beschreibende Sprache und eine Reihe von UI-Komponenten, um dynamische und reibungslose Benutzeroberflächen zu erstellen. Darüber hinaus ist Qt Quick Controls 2 Teil von Qt Quick und bietet eine Reihe moderner und konsistenter UI-Steuerelemente wie Schaltflächen, Schieberegler, Dialogfelder usw.

Qt Designer, Qt Quick Designer und Qt Quick Controls Gallery sind integrierte Tools von Qt Creator.

Qt Designer: Es handelt sich um ein visuelles Tool zum Erstellen und Bearbeiten von Benutzeroberflächen basierend auf Qt Widgets. Sie können Steuerelemente intuitiv per Drag-and-Drop auf der Designoberfläche anordnen und anordnen, die Eigenschaften von Steuerelementen festlegen und Ereignisreaktionsfunktionen wie Signale und Slots von Steuerelementen bearbeiten. Dieses Tool ist ideal für die Entwicklung herkömmlicher, fensterbasierter Desktop-Anwendungen.

Qt Quick Designer: Dies ist ein visuelles Tool zum Erstellen und Bearbeiten von Qt Quick-basierten Benutzeroberflächen. Ähnlich wie bei Qt Designer können Sie Steuerelemente per Drag & Drop auf der Designoberfläche anordnen, Eigenschaften von Steuerelementen festlegen und Ereignisreaktionsfunktionen von Steuerelementen bearbeiten. Dieses Tool ist ideal für die Entwicklung dynamischer, reaktiver, QML-basierter Anwendungen.

Qt Quick Controls Gallery: Dies ist eine Anwendung, die alle Steuerelemente und Stile in Qt Quick Controls 2 präsentiert. Sie können es ausführen, um verschiedene Steuerelemente und Stile anzuzeigen und zu testen und diejenigen auszuwählen, die für Ihre Anwendung am besten geeignet sind. Dieses Tool kann Ihnen helfen, Qt Quick Controls 2 besser zu verstehen und zu verwenden.

Darüber hinaus ist Qt Design Studio ein unabhängiges, leistungsstarkes UI-Design- und Entwicklungstool, das Benutzeroberflächen basierend auf Qt Quick und Qt Quick Controls 2 erstellen kann. Qt Design Studio unterstützt auch den Import von Prototypen aus Designtools wie Photoshop und Sketch, sodass Designer und Entwickler besser zusammenarbeiten können.

2. Code manuell schreiben: Erstellen Sie GUI-Anwendungen durch vollständig manuelle Programmierung. Sie können QWidgets, Qt Quick und Qt Quick Controls 2 Qt-Module im Qt-Framework verwenden, um GUI-Komponenten direkt im C++-Code zu erstellen und zu betreiben. Für diese Methode müssen Sie mit den Klassen und APIs von Qt vertraut sein und die GUI-Komponenten einzeln codieren. Dieser Ansatz bietet zwar eine flexiblere Steuerung und einen höheren Grad an Anpassung, erfordert jedoch mehr Zeit und Aufwand für das Schreiben und Warten des Codes.

Ein Überblick darüber, wie verschiedene Build-Systeme mit Ressourcendateien umgehen (z. B. Bilder, Musik)

Verschiedene Build-Systeme (qmake, CMake oder Qbs) verarbeiten Ressourcendateien (wie Bilder und Musik) unterschiedlich. In einigen Fällen müssen Sie die Konfigurationsdatei manuell ändern, um sicherzustellen, dass diese Ressourcen korrekt in das Projekt einbezogen werden. In Qt Creator können Sie bei Verwendung von qmake .qrt-Dateien über die grafische Oberfläche bearbeiten. Ressourcen werden normalerweise über das Qt Resource System (QRC) verwaltet, ohne dass Sie sich manuell um die Details von Dateipfaden und Laderessourcen kümmern müssen, was möglich ist Vereinfachen Sie die Ressourcendokumentenverwaltung. Bei CMake und Qbs müssen Sie möglicherweise Textdateien manuell bearbeiten, um Ressourcen zu verwalten.

Hier ist die grundlegende Art und Weise, wie jedes Build-System mit Ressourcendateien umgeht:

qmake

Bei der Verwendung von qmake werden Ressourcen normalerweise über das Qt Resource System (QRC) verwaltet. Sie müssen eine Ressourcendatei erstellen (normalerweise mit der Erweiterung .qrc) und die im Projekt verwendeten Ressourcen auflisten. Fügen Sie dann einen Verweis auf diese Ressourcendatei in der .pro-Datei hinzu.

Ihre .qrc-Datei könnte beispielsweise so aussehen:

<RCC>

    <qresource prefix="/images">

        <file>logo.png</file>

        <file>background.jpg</file>

    </qresource>

    <qresource prefix="/sounds">

        <file>click.wav</file>

    </qresource>

</RCC>

CMake

Überblick über die Schritte zum Hinzufügen und Verwenden von Ressourcendateien in CMake-Build-Projekten:
1. Ressourcendateien (.qrc) erstellen: Zuerst müssen Sie manuell eine neue Qt-Ressourcendatei (z. B. mit Notepad) im Stammverzeichnis des Projekts erstellen , zum Beispiel „ resources.qrc“. Bei dieser Datei handelt es sich um eine XML-Datei, die alle Ressourcendateien auflistet, die in die Anwendung einbezogen werden sollen.
Ressourcendateien bearbeiten: In der Datei „resources.qrc“ können Sie Ihre Ressourcendateien hinzufügen. Das Format der Datei ist wie folgt:
<RCC>
    <qresource prefix="/">
        <file>images/myicon.png</file>
        <file>images/mybackground.png</file>
        <file>sounds/mysound .wav</ file>
        <file>videos/myvideo.mp4</file>
    </qresource>
</RCC>
In diesem Beispiel wird die Ressourcendatei zum Stammpfad („/“) hinzugefügt. Sie müssen diese Dateinamen entsprechend dem tatsächlichen Dateipfad ändern.
2. Ressourcendateien zu CMakeLists.txt hinzufügen: Anschließend müssen Sie die Datei resources.qrc zur Datei CMakeLists.txt hinzufügen. Fügen Sie im Befehl add_executable oder add_library die Datei resources.qrc ein. Zum Beispiel: add_executable(MyApp main.cpp window.cpp resources.qrc)
Ihre CMakeLists.txt-Datei enthält bereits die Variable PROJECT_SOURCES. Sie sollten Ihre CMakeLists.txt wie folgt ändern:
set(PROJECT_SOURCES
    main.cpp
    mainwindow.cpp
    mainwindow.h
    mainwindow .ui
    resources.qrc #Fügen Sie hier Ihre Ressourcendateien hinzu
)
3. Ressourcendateien im Code verwenden: Jetzt können Sie diese Ressourcendateien im Code verwenden. Sie können die URL :/ verwenden, um auf diese Dateien zu verweisen. Um beispielsweise das Symbol und das Hintergrundbild des Formulars festzulegen, wenn Ihre Hauptformularklasse MainWindow ist, können Sie den folgenden Code im Konstruktor von MainWindow hinzufügen:
// Setze das Symbol des Formulars
this->setWindowIcon(QIcon(" :/images/myicon.png"));

//Legen Sie das Hintergrundbild des Formulars fest
this->setStyleSheet("QMainWindow { background-image: url(:/images/mybackground.png) }");
Für Audio- und Videodateien können Sie die QMediaPlayer-Klasse verwenden, um sie abzuspielen :
c++ Code kopieren
// Audiodateien abspielen
QMediaPlayer* player = new QMediaPlayer;
player->setMedia(QUrl("qrc:/sounds/mysound.wav"));
player->play();

// Videodateien abspielen
QMediaPlayer* videoPlayer = new QMediaPlayer;
QVideoWidget* videoWidget = new QVideoWidget;
videoPlayer->setVideoOutput(videoWidget);
videoPlayer->setMedia(QUrl("qrc:/videos/myvideo.mp4"));
videoWidget-> show();
videoPlayer->play();
Dies sind die Schritte zur Verwendung des Qt-Ressourcensystems in einem mit CMake erstellten Projekt.

Qbs

Qbs ist ein neues Build-Tool, das auch über eine eigene Art der Ressourcenverwaltung verfügt. In .qbs-Dateien können Sie das Gruppenelement verwenden, um Ressourcendateien anzugeben und sie in das Projekt einzubinden.

Zum Beispiel:

Gruppe {

    Name: „Bilder“

    Dateien: ["images/logo.png", "images/background.jpg"]

    fileTags: ["Bild"]

}

Gruppe {

    Name: „Geräusche“

    Dateien: ["sounds/click.wav"]

    fileTags: ["Sound"]

}

Eine Sache, die hier klargestellt werden muss, ist, dass Sie, sobald Sie die Konfigurationsdatei (.qrc, CMakeLists.txt oder .qbs-Datei) erstellt und die Regeln für die Einbeziehung von Ressourcen festgelegt haben, beim Hinzufügen neuer Ressourcendateien zum angegebenen Verzeichnis oder Modus möglicherweise nichts mehr benötigen um die Konfigurationsdatei jedes Mal manuell zu aktualisieren. Zum Beispiel:

  • Wenn Sie in qmake ein Verzeichnis in der .qrc-Datei angeben, werden alle Ressourcendateien in diesem Verzeichnis einbezogen, sodass Sie die .qrc-Datei nicht jedes Mal ändern müssen, wenn Sie eine neue Datei hinzufügen.
  • In CMake können Sie ein Skript schreiben, um automatisch alle Dateien in einem Verzeichnis als Ressourcen einzubeziehen, oder Platzhalter verwenden, um Ressourcendateien anzugeben, sodass Sie CMakeLists.txt beim Hinzufügen neuer Dateien nicht ändern müssen.
  • In Qbs können Sie auf ähnliche Weise ein Verzeichnis angeben, sodass alle Dateien in diesem Verzeichnis als Ressourcen betrachtet werden.

Wenn Sie jedoch die Struktur Ihrer Ressourcendateien ändern, z. B. durch das Hinzufügen neuer Verzeichnisse oder die Änderung der Dateiorganisation, müssen Sie diese Konfigurationsdateien dennoch aktualisieren, um diese Änderungen widerzuspiegeln. Darüber hinaus müssen Sie diese Konfigurationsdateien auch manuell bearbeiten, wenn Sie möchten, dass Ihre Ressourcen im Build-System speziell behandelt werden, z. B. indem Sie unterschiedliche Ressourcenpräfixe angeben oder unterschiedliche Ressourcensätze für unterschiedliche Build-Ziele einschließen.

Überblick über die Interaktions- und Kommunikationsmethoden von Qt

Das Qt-Framework bietet verschiedene Möglichkeiten zur Implementierung der Interaktion und Kommunikation zwischen Objekten. Hier sind einige der Hauptmechanismen:

  1. Signale und Slots :
    • Dies ist der leistungsstärkste Kommunikationsmechanismus in Qt und der Kern der Interaktion zwischen Qt-Objekten.
    • Ein Signal ist eine von einem Objekt gesendete Nachricht, die angibt, dass ein Ereignis aufgetreten ist oder eine Zustandsänderung stattgefunden hat.
    • Slots sind Funktionen, die auf Signale reagieren können, bei denen es sich um gewöhnliche Mitgliedsfunktionen, statische Funktionen oder Lambda-Ausdrücke handeln kann.
    • Wenn ein Signal ausgegeben wird, werden alle mit diesem Signal verbundenen Slots aufgerufen.
    • Verwenden Sie die Funktion QObject::connect(), um die Verbindung zwischen Signalen und Slots herzustellen.
  2. Handhabung des Events :
    • Fast alle Benutzeroberflächenereignisse in Qt, wie Mausklicks, Tastendrücke usw., werden über das Ereignissystem verarbeitet.
    • Ein Ereignis ist eine Instanz der QEvent-Klasse, die alle relevanten Informationen zum Ereignis enthält.
    • Ereignisse werden über die Ereignisschleife an die entsprechenden Objekte verteilt und von der Funktion event() des Objekts verarbeitet.
    • Sie können die Ereignisverarbeitung anpassen, indem Sie die Funktion event() oder spezifischere Ereignisverarbeitungsfunktionen (z. B. mousePressEvent(), keyPressEvent() usw.) überschreiben.
  3. Interprozesskommunikation (IPC ) :
    • Qt bietet eine Vielzahl von IPC-Mechanismen, darunter unter anderem:
    • DBus : IPC-Mechanismus für Unix-ähnliche Systeme.
    • TCP/UDP-Sockets : Als Grundlage der Netzwerkkommunikation bietet Qt Unterstützung für die Socket-Programmierung über QTcpSocket, QUdpSocket und andere Klassen.
    • Shared Memory : Ermöglicht verschiedenen Prozessen den Zugriff auf denselben Speicherbereich.
    • Pipes : Traditioneller IPC-Mechanismus. Qt unterstützt die Pipe-Kommunikation über die QProcess-Klasse.
  4. Multi - Threading :
    • Qt unterstützt Multithread-Programmierung, was durch die Vererbung der QThread-Klasse oder die Verwendung des QtConcurrent-Moduls erreicht werden kann.
    • Mit Threads können Sie Aufgaben mit langer Laufzeit ausführen, ohne den Hauptthread zu blockieren, sodass die Benutzeroberfläche reaktionsfähig bleibt.
    • Qt bietet threadsichere Signal- und Slotverbindungen, um Signale sicher zwischen verschiedenen Threads zu senden.
  5. Timer : _
    • Timer können nach einem bestimmten Zeitintervall Signale aussenden, die zum Auslösen periodischer Ereignisse verwendet werden können, beispielsweise zur regelmäßigen Aktualisierung der Benutzeroberfläche oder zur Überprüfung, ob eine bestimmte Bedingung erfüllt ist. Qt bietet eine Vielzahl von Timer-Tools wie QTimer, QElapsedTimer usw., mit denen Entwickler regelmäßig bestimmte Aufgaben ausführen können, z. B. die Aktualisierung der Schnittstelle, die Verarbeitung von Daten usw. Mithilfe von Timern können Animationseffekte, Aufgabenplanung und andere Funktionen implementiert werden.

Das Obige ist ein Überblick über häufig verwendete Interaktions- und Kommunikationsmethoden in Qt. Abhängig von den Anforderungen und Szenarien der Anwendung können Sie eine geeignete Methode zur Implementierung der Interaktion und Datenübertragung zwischen Komponenten auswählen.

Nächste Vorlesung, Qt 6 Teil 5: Erstellen eines Menüs

Supongo que te gusta

Origin blog.csdn.net/cnds123/article/details/135401606
Recomendado
Clasificación