QUiLoader Class
Charge et instancie les formulaires du Designer d'Qt Widgets lors de l'exécution. En savoir plus...
| En-tête : | #include <QUiLoader> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS UiTools) target_link_libraries(mytarget PRIVATE Qt6::UiTools) |
| qmake : | QT += uitools |
| Hérite de : | QObject |
Fonctions publiques
| 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 |
Description détaillée
Utilisez QUiLoader pour créer dynamiquement des interfaces utilisateur basées sur l'QWidget, à partir des informations stockées dans des fichiers d'interface utilisateur (créés avec Qt Widgets Designer).
La fonction load() lit le contenu d’un fichier d’interface utilisateur, instancie les widgets décrits dans le fichier et renvoie un pointeur vers l’ QWidget de niveau supérieur. Ce widget peut ensuite être affiché :
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);
}Si l'instanciation échoue, la fonction renvoie un nullptr; utilisez la fonction errorString() pour récupérer une description lisible par l'utilisateur de l'erreur qui s'est produite.
Chargement de formulaires avec des widgets personnalisés
Si le fichier d’interface utilisateur contient des widgets personnalisés implémentés dans un plugin d’ Qt Widgets Designer, le chargement échouera par défaut. Pour contourner ce problème, vous pouvez créer une sous-classe de ` QUiLoader ` et redéfinir la fonction ` createWidget()`. Si cela n’est pas possible, vous pouvez également permettre au module de charger les plugins d’ Qt Widgets Designer en ajoutant leurs emplacements via ` addPluginPath()` ou la variable d’environnement ` QT_PLUGIN_PATH `. Pour plus d’informations, consultez la page Création de widgets personnalisés pour le Designer d’ Qt Widgets .
Chargement d’un widget spécifique à partir d’un fichier d’interface utilisateur
Vous pouvez charger un widget spécifique à partir d’un fichier d’interface utilisateur, plutôt que le fichier d’interface utilisateur complet. Utilisez la fonction ` availableWidgets()` pour récupérer les noms des widgets disponibles, et la fonction ` createWidget()` pour instancier un widget spécifique. Par exemple :
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);
}Personnalisation de la création du widget
Les fonctions createAction(), createActionGroup(), createLayout() et createWidget() sont utilisées en interne par la classe QUiLoader chaque fois qu'elle doit créer respectivement une action, un groupe d'actions, une mise en page ou un widget. Vous pouvez créer une sous-classe de QUiLoader et réimplémenter ces fonctions pour personnaliser le processus de création de l’interface utilisateur. Par exemple, vous pourriez souhaiter disposer d’une liste des actions créées lors du chargement d’un formulaire ou de la création d’un widget personnalisé.
Exemple
Pour un exemple complet d’utilisation de la classe QUiLoader, consultez le Calculator Builder.
Voir également Qt UI Tools et QFormBuilder.
Documentation sur les fonctions membres
[explicit] QUiLoader::QUiLoader(QObject *parent = nullptr)
Crée un chargeur de formulaire avec l'parent ion fournie.
[override virtual noexcept] QUiLoader::~QUiLoader()
Détruit le chargeur.
void QUiLoader::addPluginPath(const QString &path)
Ajoute l'path on indiquée à la liste des chemins dans lesquels le chargeur effectuera ses recherches pour localiser les plugins.
Avertissement : ne définissezque des chemins auxquels vous faites confiance. Autoriser des utilisateurs non fiables à créer ou à ajouter du contenu dans un chemin spécifié peut entraîner des failles de sécurité.
Voir également pluginPaths() et clearPluginPaths().
QStringList QUiLoader::availableLayouts() const
Renvoie une liste de toutes les mises en page disponibles pouvant être créées à l'aide de la fonction createLayout().
Voir aussi createLayout().
QStringList QUiLoader::availableWidgets() const
Renvoie une liste de tous les widgets disponibles pouvant être créés à l'aide de la fonction createWidget(), c'est-à-dire tous les widgets spécifiés dans les chemins d'accès aux plugins indiqués.
Voir également pluginPaths() et createWidget().
void QUiLoader::clearPluginPaths()
Efface la liste des chemins dans lesquels le chargeur effectuera ses recherches lors de la localisation des plugins.
Voir également addPluginPath() et pluginPaths().
[virtual] QAction *QUiLoader::createAction(QObject *parent = nullptr, const QString &name = QString())
Crée une nouvelle action avec les paramètres « parent » et « name » indiqués.
Cette fonction est également utilisée en interne par la classe QUiLoader chaque fois qu’elle crée une action. Vous pouvez donc créer une sous-classe de QUiLoader et réimplémenter cette fonction pour intervenir dans le processus de construction d’une interface utilisateur ou d’un widget. Veillez toutefois, dans votre implémentation, à appeler d’abord la version de QUiLoader.
Voir également createActionGroup(), createWidget() et load().
[virtual] QActionGroup *QUiLoader::createActionGroup(QObject *parent = nullptr, const QString &name = QString())
Crée un nouveau groupe d'actions avec les paramètres parent et name indiqués.
Cette fonction est également utilisée en interne par la classe ` QUiLoader ` chaque fois qu’elle crée un groupe d’actions. Vous pouvez donc créer une sous-classe de ` QUiLoader ` et réimplémenter cette fonction pour intervenir dans le processus de construction d’une interface utilisateur ou d’un widget. Veillez toutefois, dans votre implémentation, à appeler d’abord la version de ` QUiLoader`.
Voir également createAction(), createWidget() et load().
[virtual] QLayout *QUiLoader::createLayout(const QString &className, QObject *parent = nullptr, const QString &name = QString())
Crée une nouvelle mise en page avec les paramètres « parent » et « name » fournis, en utilisant la classe spécifiée par « className ».
Cette fonction est également utilisée en interne par la classe QUiLoader chaque fois qu’elle crée une mise en page. Vous pouvez donc créer une sous-classe de QUiLoader et réimplémenter cette fonction pour intervenir dans le processus de construction d’une interface utilisateur ou d’un widget. Veillez toutefois, dans votre implémentation, à appeler d’abord la version de QUiLoader.
Voir également createWidget() et load().
[virtual] QWidget *QUiLoader::createWidget(const QString &className, QWidget *parent = nullptr, const QString &name = QString())
Crée un nouveau widget avec les paramètres ` parent ` et ` name ` fournis, en utilisant la classe spécifiée par ` className`. Vous pouvez utiliser cette fonction pour créer n'importe lequel des widgets renvoyés par la fonction ` availableWidgets()`.
Cette fonction est également utilisée en interne par la classe QUiLoader chaque fois qu’elle crée un widget. Vous pouvez donc créer une sous-classe de QUiLoader et réimplémenter cette fonction pour intervenir dans le processus de construction d’une interface utilisateur ou d’un widget. Veillez toutefois, dans votre implémentation, à appeler d’abord la version de QUiLoader.
Voir également availableWidgets() et load().
QString QUiLoader::errorString() const
Renvoie une description compréhensible par l'utilisateur de la dernière erreur survenue dans load().
Voir également load().
bool QUiLoader::isLanguageChangeEnabled() const
Renvoie « true » si la retranslation dynamique en cas de changement de langue est activée ; renvoie « false » dans le cas contraire.
La valeur par défaut est false.
Voir également setLanguageChangeEnabled().
QWidget *QUiLoader::load(QIODevice *device, QWidget *parentWidget = nullptr)
Instancie un formulaire à partir du fichier ` device` fourni. Renvoie un nouvel objet ` QWidget ` avec le ` parentWidget ` fourni en cas de réussite. Renvoie ` nullptr ` dans le cas contraire.
Avertissement : ne chargezque des formulaires provenant de sources fiables, telles que le système de ressources Qt. Le chargement de fichiers .ui provenant de sources non fiables peut entraîner des menaces de sécurité dans votre application, telles que des attaques par déni de service, la falsification de l'interface utilisateur ou le chargement de plugins inattendus.
Voir également createWidget() et errorString().
QStringList QUiLoader::pluginPaths() const
Renvoie une liste indiquant les chemins dans lesquels le chargeur effectuera ses recherches pour localiser les plugins de widgets personnalisés.
Voir également addPluginPath() et clearPluginPaths().
void QUiLoader::setLanguageChangeEnabled(bool enabled)
Si la valeur de enabled est « true », les interfaces utilisateur chargées par ce chargeur seront automatiquement retraduites dès qu'un événement de changement de langue sera détecté. Dans le cas contraire, les interfaces utilisateur ne seront pas retraduites.
Voir également isLanguageChangeEnabled().
void QUiLoader::setWorkingDirectory(const QDir &dir)
Définit le répertoire de travail du chargeur sur dir. Le chargeur recherchera d'autres ressources, telles que des icônes et des fichiers de ressources, dans des chemins relatifs à ce répertoire.
Avertissement : ne définissezqu’ un répertoire auquel vous faites confiance. Autoriser des utilisateurs non fiables à créer ou à ajouter du contenu dans le répertoire de travail peut entraîner des failles de sécurité.
Voir également workingDirectory().
QDir QUiLoader::workingDirectory() const
Renvoie le répertoire de travail du chargeur.
Voir aussi 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.