QUiLoader Class
Lädt und instanziiert „ Qt Widgets “-Designer-Formulare zur Laufzeit. Mehr...
| Header: | #include <QUiLoader> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS UiTools) target_link_libraries(mytarget PRIVATE Qt6::UiTools) |
| qmake: | QT += uitools |
| Erbt von: | 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 |
Ausführliche Beschreibung
Verwenden Sie QUiLoader, um dynamisch auf „ QWidget “ basierende Benutzeroberflächen zu erstellen, die auf den in UI-Dateien (erstellt mit dem „ Qt Widgets Designer“) gespeicherten Informationen basieren.
Die Funktion ` load()` liest den Inhalt einer UI-Datei, instanziiert die in der Datei beschriebenen Widgets und gibt einen Zeiger auf das oberste ` QWidget` zurück. Dieses Widget kann dann angezeigt werden:
MyWidget::MyWidget(QWidget*parent)
: QWidget(parent)
{
QFile file(":/forms/myform.ui");
if (!file.open(QFile::ReadOnly))
qFatal("Cannot open resource file");
QUiLoader loader;
QWidget*myWidget = loader.load(&file, this);
QVBoxLayout*layout = new QVBoxLayout;
layout->addWidget(myWidget);
setLayout(layout);
}Wenn die Instanziierung fehlschlägt, gibt die Funktion einen ` nullptr` zurück; verwenden Sie die Funktion ` errorString()` um eine für Menschen lesbare Beschreibung des aufgetretenen Fehlers abzurufen.
Formulare mit benutzerdefinierten Widgets laden
Wenn die UI-Datei benutzerdefinierte Widgets enthält, die in einem „ Qt Widgets Designer“-Plugin implementiert sind, schlägt das Laden standardmäßig fehl. Um dies zu umgehen, können Sie eine Unterklasse von ` QUiLoader ` erstellen und die Funktion ` createWidget()` überschreiben. Ist dies nicht möglich, können Sie das Modul auch „ Qt Widgets Designer“-Plugins laden lassen, indem Sie deren Speicherorte über ` addPluginPath()` oder die Umgebungsvariable ` QT_PLUGIN_PATH ` hinzufügen. Weitere Informationen finden Sie auf der Seite „Erstellen benutzerdefinierter Widgets für den „ Qt Widgets “-Designer “.
Ein bestimmtes Widget aus einer UI-Datei laden
Sie können anstelle einer vollständigen UI-Datei ein bestimmtes Widget aus einer UI-Datei laden. Verwenden Sie die Funktion „ availableWidgets()“, um die Namen der verfügbaren Widgets abzurufen, und die Funktion „ createWidget()“, um ein bestimmtes Widget zu instanziieren. Beispiel:
QWidget*loadCustomWidget(const QString&className, QWidget*parent)
{
QUiLoader loader;
QStringList availableWidgets = loader.availableWidgets();
if (!availableWidgets.contains(className)) {
qWarning() << "Cannot create widget" << className;
return nullptr;
}
return loader.createWidget(className, parent);
}Anpassen der Widget-Erstellung
Die Funktionen ` createAction()`, ` createActionGroup()`, ` createLayout()` und ` createWidget()` werden intern von der Klasse `QUiLoader` verwendet, wenn diese jeweils eine Aktion, eine Aktionsgruppe, ein Layout oder ein Widget erstellen muss. Sie können eine Unterklasse von QUiLoader erstellen und diese Funktionen neu implementieren, um den Ablauf der UI-Erstellung anzupassen. Beispielsweise möchten Sie vielleicht eine Liste der Aktionen erhalten, die beim Laden eines Formulars oder beim Erstellen eines benutzerdefinierten Widgets erstellt werden.
Beispiel
Ein vollständiges Beispiel für die Verwendung der Klasse `QUiLoader` finden Sie im „Calculator Builder“.
Siehe auch Qt UI Tools sowie QFormBuilder.
Dokumentation zu Member-Funktionen
[explicit] QUiLoader::QUiLoader(QObject *parent = nullptr)
Erstellt einen Formular-Loader mit dem angegebenen „ parent “.
[override virtual noexcept] QUiLoader::~QUiLoader()
Zerstört den Lader.
void QUiLoader::addPluginPath(const QString &path)
Fügt den angegebenen Pfad „ path “ zur Liste der Pfade hinzu, in denen der Loader beim Suchen nach Plugins sucht.
Warnung: Legen Sienur Pfade fest, denen Sie vertrauen. Wenn Sie nicht vertrauenswürdigen Benutzern erlauben, Inhalte in einem bestimmten Pfad zu erstellen oder hinzuzufügen, kann dies zu Sicherheitslücken führen.
Siehe auch ` pluginPaths()` und ` clearPluginPaths()`.
QStringList QUiLoader::availableLayouts() const
Gibt eine Liste aller 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 definiert sind.
Siehe auch „ pluginPaths()“ und „ createWidget()“.
void QUiLoader::clearPluginPaths()
Löscht die Liste der Pfade, in denen der Loader beim Suchen nach Plugins sucht.
Siehe auch addPluginPath() und pluginPaths().
[virtual] QAction *QUiLoader::createAction(QObject *parent = nullptr, const QString &name = QString())
Erstellt eine neue Aktion mit den angegebenen Werten „ parent “ und „ name “.
Die Funktion wird auch intern von der Klasse „ QUiLoader “ verwendet, wann immer diese eine Aktion erstellt. Daher können Sie eine Unterklasse von „ QUiLoader “ erstellen und diese Funktion neu implementieren, um in den Prozess der Erstellung einer Benutzeroberfläche oder eines Widgets einzugreifen. Achten Sie jedoch in Ihrer Implementierung darauf, 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())
Erstellt eine neue Aktionsgruppe mit den angegebenen Werten für „ parent “ und „ name “.
Die Funktion wird auch intern von der Klasse ` QUiLoader ` verwendet, wann immer diese eine Aktionsgruppe erstellt. Daher können Sie eine Unterklasse von ` QUiLoader ` erstellen und diese Funktion neu implementieren, um in den Prozess der Erstellung einer Benutzeroberfläche oder eines Widgets einzugreifen. Achten Sie bei Ihrer Implementierung jedoch darauf, 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())
Erstellt ein neues Layout mit den angegebenen Werten „ parent “ und „ name “ unter Verwendung der durch „ className “ angegebenen Klasse.
Die Funktion wird auch intern von der Klasse ` QUiLoader ` verwendet, wann immer diese ein Layout erstellt. Daher können Sie eine Unterklasse von ` QUiLoader ` erstellen und diese Funktion neu implementieren, um in den Prozess der Erstellung einer Benutzeroberfläche oder eines Widgets einzugreifen. Achten Sie jedoch in Ihrer Implementierung darauf, 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())
Erstellt ein neues Widget mit den angegebenen Werten für „ parent “ und „ name “ unter Verwendung der durch „ className “ angegebenen Klasse. Mit dieser Funktion können Sie jedes der Widgets erstellen, die von der Funktion „ availableWidgets()“ zurückgegeben werden.
Die Funktion wird auch intern von der Klasse ` QUiLoader ` verwendet, wann immer diese ein Widget erstellt. Daher können Sie eine Unterklasse von ` QUiLoader ` erstellen und diese Funktion neu implementieren, um in den Prozess der Erstellung einer Benutzeroberfläche oder eines Widgets einzugreifen. Achten Sie bei Ihrer Implementierung jedoch darauf, dass Sie zuerst die Version von ` QUiLoader` aufrufen.
Siehe auch ` availableWidgets()` und ` load()`.
QString QUiLoader::errorString() const
Gibt eine für Menschen lesbare 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 wird „ false “ zurückgegeben.
Der Standardwert ist „ false “.
Siehe auch setLanguageChangeEnabled().
QWidget *QUiLoader::load(QIODevice *device, QWidget *parentWidget = nullptr)
Erstellt eine Instanz eines Formulars aus der angegebenen Datei „ device “. Gibt bei Erfolg ein neues „ QWidget “ mit der angegebenen „ parentWidget “ zurück. Andernfalls wird „ nullptr “ zurückgegeben.
Warnung: Laden Sie Formularenur aus vertrauenswürdigen Quellen, wie beispielsweise dem Qt-Ressourcensystem. Das Laden von „ .ui “-Dateien aus nicht vertrauenswürdigen Quellen kann zu Sicherheitsrisiken in Ihrer Anwendung führen, wie z. B. Denial-of-Service-Angriffen, Manipulationen der Benutzeroberfläche oder dem Laden unerwarteter Plugins.
Siehe auch „ createWidget()“ und „ errorString()“.
QStringList QUiLoader::pluginPaths() const
Gibt eine Liste zurück, in der die Pfade aufgeführt sind, in denen der Loader nach benutzerdefinierten Widget-Plugins sucht.
Siehe auch addPluginPath() und clearPluginPaths().
void QUiLoader::setLanguageChangeEnabled(bool enabled)
Wenn „ enabled “ auf „true“ gesetzt ist, werden die von diesem Loader geladenen Benutzeroberflächen bei Erhalt eines Sprachwechsel-Ereignisses automatisch neu übersetzt. Andernfalls werden die Benutzeroberflächen nicht neu übersetzt.
Siehe auch ` isLanguageChangeEnabled()`.
void QUiLoader::setWorkingDirectory(const QDir &dir)
Legt das Arbeitsverzeichnis des Loaders auf „ dir “ fest. Der Loader sucht in Pfaden, die relativ zu diesem Verzeichnis liegen, nach weiteren Ressourcen wie Symbolen und Ressourcendateien.
Warnung: Legen Sienur ein Verzeichnis fest, dem Sie vertrauen. Wenn Sie nicht vertrauenswürdigen Benutzern erlauben, Inhalte im Arbeitsverzeichnis zu erstellen oder hinzuzufügen, kann dies zu Sicherheitslücken führen.
Siehe auch workingDirectory().
QDir QUiLoader::workingDirectory() const
Gibt das Arbeitsverzeichnis des Loaders zurück.
Siehe auch „ setWorkingDirectory()“.
© 2026 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.