QUiLoader Class
La classe QUiLoader permet aux applications autonomes de créer dynamiquement des interfaces utilisateur au moment de l'exécution en utilisant les informations stockées dans les fichiers d'interface utilisateur ou spécifiées dans les chemins d'accès aux plugins. Plus d'informations...
| En-tête : | #include <QUiLoader> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS UiTools)target_link_libraries(mytarget PRIVATE Qt6::UiTools) |
| qmake : | QT += uitools |
| Hérite : | 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
En outre, vous pouvez personnaliser ou créer votre propre interface utilisateur en dérivant votre propre classe de chargeur.
Si vous avez un composant personnalisé ou une application qui intègre Qt Widgets Designer, vous pouvez également utiliser la classe QFormBuilder fournie par le module QtDesigner pour créer des interfaces utilisateur à partir de fichiers UI.
La classe QUiLoader fournit une collection de fonctions vous permettant de créer des widgets basés sur les informations stockées dans les fichiers UI (créés avec Qt Widgets Designer) ou disponibles dans les chemins d'accès aux plugins spécifiés. Les chemins d'accès aux plugins spécifiés peuvent être récupérés à l'aide de la fonction pluginPaths(). De même, le contenu d'un fichier d'interface utilisateur peut être récupéré à l'aide de la fonction load(). Par exemple, le contenu d'un fichier d'interface utilisateur peut être récupéré en utilisant la fonction () :
MyWidget::MyWidget(QWidget *parent) : QWidget(parent) { QFile file(":/forms/myform.ui") ; if (!file.open(QFile::ReadOnly)) qFatal("Cannot open resource file"); QUiLoader chargeur ; QWidget *myWidget = loader.load(&file, this) ; QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(myWidget) ; setLayout(layout) ; }
En incluant l'interface utilisateur dans les ressources du formulaire (myform.qrc), nous nous assurons qu'elle sera présente au moment de l'exécution :
<!DOCTYPE RCC><RCC version="1.0"> <qresource prefix="/forms"> <file>myform.ui</file> </qresource> </RCC>
La fonction availableWidgets() renvoie un QStringList contenant les noms de classe des widgets disponibles dans les chemins de plugin spécifiés. Pour créer ces widgets, il suffit d'utiliser la fonction createWidget(). 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) ; }
Pour mettre un widget personnalisé à la disposition du chargeur, vous pouvez utiliser la fonction addPluginPath() ; pour supprimer tous les widgets disponibles, vous pouvez appeler la fonction clearPluginPaths().
Les fonctions createAction(), createActionGroup(), createLayout() et createWidget() sont utilisées en interne par la classe QUiLoader chaque fois qu'elle doit créer une action, un groupe d'actions, une disposition ou un widget. C'est pourquoi vous pouvez sous-classer la classe QUiLoader et réimplémenter ces fonctions pour intervenir dans le processus de construction d'une interface utilisateur. Par exemple, vous pouvez souhaiter disposer d'une liste des actions créées lors du chargement d'un formulaire ou de la création d'un widget personnalisé.
Pour un exemple complet d'utilisation de la classe QUiLoader, voir Calculator Builder.
Voir aussi Qt UI Tools et QFormBuilder.
Documentation sur les fonctions membres
[explicit] QUiLoader::QUiLoader(QObject *parent = nullptr)
Crée un chargeur de formulaires avec l'adresse parent.
[override virtual noexcept] QUiLoader::~QUiLoader()
Détruit le chargeur.
void QUiLoader::addPluginPath(const QString &path)
Ajoute l'adresse path à la liste des chemins dans lesquels le chargeur cherchera les plugins.
Voir aussi pluginPaths() et clearPluginPaths().
QStringList QUiLoader::availableLayouts() const
Renvoie une liste de tous les modèles disponibles qui peuvent être construits à l'aide de la fonction createLayout()
Voir aussi createLayout().
QStringList QUiLoader::availableWidgets() const
Renvoie une liste de tous les widgets disponibles qui peuvent être construits à l'aide de la fonction createWidget(), c'est-à-dire tous les widgets spécifiés dans les chemins d'accès aux plugins donnés.
Voir aussi pluginPaths() et createWidget().
void QUiLoader::clearPluginPaths()
Efface la liste des chemins dans lesquels le chargeur va chercher les plugins.
Voir aussi addPluginPath() et pluginPaths().
[virtual] QAction *QUiLoader::createAction(QObject *parent = nullptr, const QString &name = QString())
Crée une nouvelle action avec les données parent et name.
Cette fonction est également utilisée en interne par la classe QUiLoader lorsqu'elle crée un widget. Vous pouvez donc sous-classer QUiLoader et réimplémenter cette fonction pour intervenir dans le processus de construction d'une interface utilisateur ou d'un widget. Toutefois, dans votre implémentation, veillez à appeler d'abord la version de QUiLoader.
Voir aussi createActionGroup(), createWidget() et load().
[virtual] QActionGroup *QUiLoader::createActionGroup(QObject *parent = nullptr, const QString &name = QString())
Crée un nouveau groupe d'action avec les données parent et name.
Cette fonction est également utilisée en interne par la classe QUiLoader lorsqu'elle crée un widget. Vous pouvez donc sous-classer QUiLoader et réimplémenter cette fonction pour intervenir dans le processus de construction d'une interface utilisateur ou d'un widget. Toutefois, dans votre implémentation, veillez à appeler d'abord la version de QUiLoader.
Voir aussi createAction(), createWidget() et load().
[virtual] QLayout *QUiLoader::createLayout(const QString &className, QObject *parent = nullptr, const QString &name = QString())
Crée une nouvelle présentation avec les données parent et name en utilisant la classe spécifiée par className.
Cette fonction est également utilisée en interne par la classe QUiLoader lorsqu'elle crée un widget. Vous pouvez donc sous-classer QUiLoader et réimplémenter cette fonction pour intervenir dans le processus de construction d'une interface utilisateur ou d'un widget. Toutefois, dans votre implémentation, veillez à appeler d'abord la version de QUiLoader.
Voir aussi createWidget() et load().
[virtual] QWidget *QUiLoader::createWidget(const QString &className, QWidget *parent = nullptr, const QString &name = QString())
Crée un nouveau widget avec les données parent et name en utilisant la classe spécifiée par className. Vous pouvez utiliser cette fonction pour créer n'importe quel widget renvoyé par la fonction availableWidgets().
La fonction est également utilisée en interne par la classe QUiLoader chaque fois qu'elle crée un widget. Vous pouvez donc sous-classer QUiLoader et réimplémenter cette fonction pour intervenir dans le processus de construction d'une interface utilisateur ou d'un widget. Toutefois, dans votre implémentation, veillez à appeler d'abord la version de QUiLoader.
Voir aussi availableWidgets() et load().
QString QUiLoader::errorString() const
Renvoie une description lisible par l'homme de la dernière erreur survenue dans load().
Voir aussi load().
bool QUiLoader::isLanguageChangeEnabled() const
Retourne vrai si la retranslation dynamique en cas de changement de langue est activée ; retourne faux dans le cas contraire.
Voir aussi setLanguageChangeEnabled().
QWidget *QUiLoader::load(QIODevice *device, QWidget *parentWidget = nullptr)
Charge un formulaire à partir de l'adresse device et crée un nouveau widget avec l'adresse parentWidget pour contenir son contenu.
Voir aussi createWidget() et errorString().
QStringList QUiLoader::pluginPaths() const
Renvoie une liste nommant les chemins dans lesquels le chargeur cherchera à localiser les plugins de widgets personnalisés.
Voir aussi addPluginPath() et clearPluginPaths().
void QUiLoader::setLanguageChangeEnabled(bool enabled)
Si enabled est vrai, les interfaces utilisateur chargées par ce chargeur seront automatiquement retraduites à la réception d'un événement de changement de langue. 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 à dir. Le chargeur recherchera d'autres ressources, telles que les icônes et les fichiers de ressources, dans les chemins relatifs à ce répertoire.
Voir aussi 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.