QUiLoader Class
Die QUiLoader-Klasse ermöglicht es eigenständigen Anwendungen, dynamisch Benutzeroberflächen zur Laufzeit zu erstellen, indem sie die in UI-Dateien gespeicherten oder in Plugin-Pfaden angegebenen Informationen verwendet. Mehr...
Kopfzeile: | #include <QUiLoader> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS UiTools) target_link_libraries(mytarget PRIVATE Qt6::UiTools) |
qmake: | QT += uitools |
Vererbungen: | QObject |
Öffentliche Funktionen
QUiLoader(QObject *parent = nullptr) | |
virtual | ~QUiLoader() override |
void | addPluginPath(const QString &path) |
QStringList | availableLayouts() const |
QStringList | availableWidgets() const |
void | clearPluginPaths() |
virtual QAction * | createAction(QObject *parent = nullptr, const QString &name = QString()) |
virtual QActionGroup * | createActionGroup(QObject *parent = nullptr, const QString &name = QString()) |
virtual QLayout * | createLayout(const QString &className, QObject *parent = nullptr, const QString &name = QString()) |
virtual QWidget * | createWidget(const QString &className, QWidget *parent = nullptr, const QString &name = QString()) |
QString | errorString() const |
bool | isLanguageChangeEnabled() const |
QWidget * | load(QIODevice *device, QWidget *parentWidget = nullptr) |
QStringList | pluginPaths() const |
void | setLanguageChangeEnabled(bool enabled) |
void | setWorkingDirectory(const QDir &dir) |
QDir | workingDirectory() const |
Detaillierte Beschreibung
Darüber hinaus können Sie Ihre eigene Benutzeroberfläche anpassen oder erstellen, indem Sie Ihre eigene Loader-Klasse ableiten.
Wenn Sie eine benutzerdefinierte Komponente oder eine Anwendung haben, die Qt Widgets Designer einbettet, können Sie auch die Klasse QFormBuilder verwenden, die vom Modul QtDesigner bereitgestellt wird, um Benutzeroberflächen aus UI-Dateien zu erstellen.
Die QUiLoader-Klasse bietet eine Sammlung von Funktionen, mit denen Sie Widgets auf der Grundlage von Informationen erstellen können, die in UI-Dateien (mit Qt Widgets Designer erstellt) gespeichert oder in den angegebenen Plugin-Pfaden verfügbar sind. Die angegebenen Plugin-Pfade können mit der Funktion pluginPaths() abgerufen werden. In ähnlicher Weise kann der Inhalt einer UI-Datei mit der Funktion load() abgerufen werden. Ein Beispiel:
MyWidget::MyWidget(QWidget *parent) : QWidget(parent) { QUiLoader loader; QFile file(":/forms/myform.ui"); file.open(QFile::ReadOnly); QWidget *myWidget = loader.load(&file, this); file.close(); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(myWidget); setLayout(layout); }
Indem wir die Benutzeroberfläche in die Ressourcen des Formulars aufnehmen (myform.qrc
), stellen wir sicher, dass sie zur Laufzeit vorhanden sein wird:
<!DOCTYPE RCC><RCC version="1.0"> <qresource prefix="/forms"> <file>myform.ui</file> </qresource> </RCC>
Die Funktion availableWidgets() gibt eine QStringList mit den Klassennamen der Widgets zurück, die in den angegebenen Plugin-Pfaden verfügbar sind. Um diese Widgets zu erstellen, verwenden Sie einfach die Funktion createWidget(). Ein Beispiel:
QWidget *loadCustomWidget(QWidget *parent) { QUiLoader loader; QWidget *myWidget; QStringList availableWidgets = loader.availableWidgets(); if (availableWidgets.contains("AnalogClock")) myWidget = loader.createWidget("AnalogClock", parent); return myWidget; }
Um ein benutzerdefiniertes Widget für den Lader verfügbar zu machen, können Sie die Funktion addPluginPath() verwenden; um alle verfügbaren Widgets zu entfernen, können Sie die Funktion clearPluginPaths() aufrufen.
Die Funktionen createAction(), createActionGroup(), createLayout() und createWidget() werden intern von der QUiLoader-Klasse verwendet, wenn sie eine Aktion, eine Aktionsgruppe, ein Layout oder ein Widget erstellen muss. Aus diesem Grund können Sie die QUiLoader-Klasse subklassifizieren und diese Funktionen reimplementieren, um in den Prozess der Erstellung einer Benutzeroberfläche einzugreifen. Zum Beispiel könnten Sie eine Liste der Aktionen haben wollen, die beim Laden eines Formulars oder beim Erstellen eines benutzerdefinierten Widgets erstellt werden.
Ein vollständiges Beispiel für die Verwendung der QUiLoader-Klasse finden Sie im Calculator Builder.
Siehe auch Qt UI Tools und QFormBuilder.
Dokumentation der Mitgliedsfunktionen
[explicit]
QUiLoader::QUiLoader(QObject *parent = nullptr)
Erzeugt einen Formularlader mit der angegebenen parent.
[override virtual noexcept]
QUiLoader::~QUiLoader()
Zerstört den Lader.
void QUiLoader::addPluginPath(const QString &path)
Fügt die angegebene path zur Liste der Pfade hinzu, in denen der Lader beim Auffinden von Plugins suchen wird.
Siehe auch pluginPaths() und clearPluginPaths().
QStringList QUiLoader::availableLayouts() const
Gibt eine Liste mit allen verfügbaren Layouts zurück, die mit der Funktion createLayout() erstellt werden können.
Siehe auch createLayout().
QStringList QUiLoader::availableWidgets() const
Gibt eine Liste aller verfügbaren Widgets zurück, die mit der Funktion createWidget() erstellt werden können, d. h. alle Widgets, die in den angegebenen Plugin-Pfaden angegeben sind.
Siehe auch pluginPaths() und createWidget().
void QUiLoader::clearPluginPaths()
Löscht die Liste der Pfade, in denen der Lader beim Auffinden von Plugins sucht.
Siehe auch addPluginPath() und pluginPaths().
[virtual]
QAction *QUiLoader::createAction(QObject *parent = nullptr, const QString &name = QString())
Erzeugt eine neue Aktion mit den angegebenen parent und name.
Die Funktion wird auch intern von der Klasse QUiLoader verwendet, wenn sie ein Widget erstellt. Daher können Sie QUiLoader unterordnen und diese Funktion neu implementieren, um in den Prozess der Erstellung einer Benutzeroberfläche oder eines Widgets einzugreifen. Stellen Sie jedoch in Ihrer Implementierung sicher, dass Sie zuerst die Version von QUiLoader aufrufen.
Siehe auch createActionGroup(), createWidget(), und load().
[virtual]
QActionGroup *QUiLoader::createActionGroup(QObject *parent = nullptr, const QString &name = QString())
Erzeugt eine neue Aktionsgruppe mit den angegebenen parent und name.
Die Funktion wird auch intern von der Klasse QUiLoader verwendet, wenn sie ein Widget erstellt. Daher können Sie QUiLoader unterklassifizieren und diese Funktion neu implementieren, um in den Prozess der Erstellung einer Benutzeroberfläche oder eines Widgets einzugreifen. Stellen Sie jedoch in Ihrer Implementierung sicher, dass Sie zuerst die Version von QUiLoader aufrufen.
Siehe auch createAction(), createWidget(), und load().
[virtual]
QLayout *QUiLoader::createLayout(const QString &className, QObject *parent = nullptr, const QString &name = QString())
Erzeugt ein neues Layout mit den angegebenen parent und name unter Verwendung der durch className angegebenen Klasse.
Die Funktion wird auch intern von der Klasse QUiLoader verwendet, wenn sie ein Widget erstellt. Daher können Sie QUiLoader unterklassifizieren und diese Funktion neu implementieren, um in den Prozess der Erstellung einer Benutzeroberfläche oder eines Widgets einzugreifen. Stellen Sie jedoch in Ihrer Implementierung sicher, dass Sie zuerst die Version von QUiLoader aufrufen.
Siehe auch createWidget() und load().
[virtual]
QWidget *QUiLoader::createWidget(const QString &className, QWidget *parent = nullptr, const QString &name = QString())
Erzeugt ein neues Widget mit den angegebenen parent und name unter Verwendung der durch className angegebenen Klasse. Sie können diese Funktion verwenden, um eines der Widgets zu erstellen, die von der Funktion availableWidgets() zurückgegeben werden.
Die Funktion wird auch intern von der Klasse QUiLoader verwendet, wenn sie ein Widget erstellt. Daher können Sie die Klasse QUiLoader unterordnen und diese Funktion neu implementieren, um in den Prozess der Erstellung einer Benutzeroberfläche oder eines Widgets einzugreifen. Stellen Sie jedoch in Ihrer Implementierung sicher, dass Sie zuerst die Version von QUiLoader aufrufen.
Siehe auch availableWidgets() und load().
QString QUiLoader::errorString() const
Gibt eine menschenlesbare Beschreibung des letzten Fehlers zurück, der in load() aufgetreten ist.
Siehe auch load().
bool QUiLoader::isLanguageChangeEnabled() const
Gibt true zurück, wenn die dynamische Neuübersetzung bei Sprachwechsel aktiviert ist; andernfalls false.
Siehe auch setLanguageChangeEnabled().
QWidget *QUiLoader::load(QIODevice *device, QWidget *parentWidget = nullptr)
Lädt ein Formular aus dem angegebenen device und erstellt ein neues Widget mit dem angegebenen parentWidget, um dessen Inhalt aufzunehmen.
Siehe auch createWidget() und errorString().
QStringList QUiLoader::pluginPaths() const
Gibt eine Liste mit den Pfaden zurück, in denen der Lader bei der Suche nach benutzerdefinierten Widget-Plugins suchen wird.
Siehe auch addPluginPath() und clearPluginPaths().
void QUiLoader::setLanguageChangeEnabled(bool enabled)
Wenn enabled wahr ist, werden die von diesem Loader geladenen Benutzeroberflächen automatisch neu übersetzt, wenn ein Sprachänderungsereignis eintritt. Andernfalls werden die Benutzeroberflächen nicht neu übersetzt.
Siehe auch isLanguageChangeEnabled().
void QUiLoader::setWorkingDirectory(const QDir &dir)
Setzt das Arbeitsverzeichnis des Laders auf dir. Der Lader sucht nach anderen Ressourcen, wie Icons und Ressourcendateien, in Pfaden relativ zu diesem Verzeichnis.
Siehe auch workingDirectory().
QDir QUiLoader::workingDirectory() const
Gibt das Arbeitsverzeichnis des Laders zurück.
Siehe auch setWorkingDirectory().
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.