Sur cette page

qt_add_ui

Ajoute des fichiers .ui à une cible.

La commande est définie dans le composant « Widgets » du paquet « Qt6 ». Chargez le paquet à l'aide de :

find_package(Qt6 REQUIRED COMPONENTS Widgets)

Synopsis

qt_add_ui(<TARGET>
          SOURCES file1.ui [file2.ui ...]
          [INCLUDE_PREFIX <PREFIX>]
          [OPTIONS ...])

Si les commandes sans version sont désactivées, utilisez plutôt qt6_add_ui(). Elle prend en charge le même ensemble d'arguments que cette commande.

Cette commande a été introduite dans Qt 6.8.

Description

Crée des règles permettant d’appeler l’User Interface Compiler (uic) sur les fichiers .ui. Pour chaque fichier d’entrée, un fichier d’en-tête est généré dans le répertoire de compilation. Les fichiers d’en-tête générés sont ajoutés aux sources de la cible.

Arguments

TARGET

L'argument « TARGET » spécifie la cible CMake à laquelle les fichiers d'en-tête générés seront ajoutés.

SOURCES

L'argument « SOURCES » spécifie la liste des fichiers ` .ui ` à traiter.

INCLUDE_PREFIX

INCLUDE_PREFIX Spécifie le préfixe d'inclusion pour les fichiers d'en-tête générés. Utilisez le même préfixe d'inclusion que celui utilisé dans la directive ` #include ` des fichiers source. Si ` ui_<basename>.h ` est inclus sans préfixe, cet argument peut être omis.

OPTIONS

Vous pouvez définir des OPTIONS supplémentaires à ajouter aux appels à la commande « uic ». Vous trouverez les options disponibles dans la documentation d’uic.

Exemples

Sans INCLUDE_PREFIX

Dans l’extrait de code suivant, le fichier d’ mainwindow.cpp inclut ui_mainwindow.h et mainwindow.h.

#include "mainwindow.h"
#include "ui_mainwindow.h"

CMakeLists.txt est implémenté comme suit et appelle qt_add_ui pour ajouter ui_mainwindow.h à la cible myapp.

qt_add_executable(myapp mainwindow.cpp main.cpp)
qt_add_ui(myapp SOURCES mainwindow.ui)

Dans l’exemple ci-dessus, ui_mainwindow.h est inclus sans préfixe. L’argument INCLUDE_PREFIX n’est donc pas spécifié.

Avec INCLUDE_PREFIX

#include "mainwindow.h"
#include "src/files/ui_mainwindow.h"

Dans l’extrait de code ci-dessus, mainwindow.cpp inclut ui_mainwindow.h avec un préfixe.

qt_add_executable(myapp mainwindow.cpp main.cpp)
qt_add_ui(myapp INCLUDE_PREFIX "src/files" SOURCES mainwindow.ui)

Comme ui_mainwindow.h est inclus avec un préfixe, l’argument INCLUDE_PREFIX est spécifié sous la forme src/files dans l’exemple ci-dessus.

Fichiers .ui multiples

Dans les extraits de code suivants, widget1.cpp et widget2.cpp incluent respectivement ui_widget1.h et ui_widget2.h.

widget1.cpp:

#include "src/files/ui_widget1.h"

widget2.cpp:

#include "src/files/ui_widget2.h"

ui_widget1.h et ui_widget2.h sont tous deux inclus avec le même préfixe

qt_add_executable(myapp widget1.cpp widget2.cpp main.cpp)
qt_add_ui(myapp INCLUDE_PREFIX "src/files" SOURCES widget1.ui widget2.ui)

Dans ce cas, l’argument INCLUDE_PREFIX peut être spécifié sous la forme src/files pour les deux fichiers de l’extrait ci-dessus.

Quand faut-il préférer « qt_add_ui » à « AUTOUIC » ?

qt_add_ui présente certains avantages par rapport à AUTOUIC:

  • qt_add_ui garantit que les fichiers .ui sont générés correctement lors de la première compilation, pour les générateurs Ninja et Ninja Multi-Config.
  • qt_add_ui garantit que les fichiers d’ .h s générés ne sont pas divulgués en dehors du répertoire de compilation.
  • Comme qt_add_ui n'analyse pas les fichiers source, il permet une compilation plus rapide que AUTOUIC.

Quand privilégier qt_add_ui plutôt que qt_wrap_ui?

qt_add_ui dispose de l’argument INCLUDE_PREFIX, qui permet de spécifier le préfixe d’inclusion pour les fichiers d’en-tête générés.

Remarque : il n’est pas recommandé d’utiliser à la fois qt_add_ui et AUTOUIC pour la même cible.

Voir également qt_wrap_ui().

© 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.