2014-04-24 2 views
1

Si vous devez charger le fichier .ui dynamiquement, vous pouvez utiliser le mécanisme QUiLoader. Mais si vous utilisez des ressources externes dans votre fichier .ui (s'il y a quelque chose comme <resources><include location=".../filename.qrc"/></resources> dans le fichier .ui), Qt ne le chargera pas.QUiLoader ignore le fichier de ressources

I.e. Si vous ouvrez votre fichier .ui dans Qt Designer, vous verrez tous les bitmaps sur les boutons et autres ressources. Mais si vous chargez le même fichier .ui via QUiLoader, vous ne verrez pas de bitmaps sur les boutons.

Est-ce un problème? Comment le réparer?

Répondre

1

Peu importe que vous ayez déjà utilisé votre fichier .qrc lors de la création d'un fichier .ui, le fichier devra toujours être ajouté au projet lui-même.

Il existe un certain nombre d'outils Qt qui sont utilisés dans la phase de précompilation. Les éléments suivants sont les plus couramment utilisés, mais il y a d'autres:

  1. Le compilateur Meta Object (moc) crée moc_xxx.cpp fichiers à partir fichiers d'en-tête si elles contiennent la macro Q_OBJECT (ou xxx.moc si la numérisation d'un fichier cpp) . Le compilateur de ressources (rc) crée des fichiers qrc_xxx.cpp à partir de fichiers .qrc .

  2. Le compilateur d'interface utilisateur (uic) crée des fichiers ui_xxx.h à partir de fichiers .ui.

Tout outil qui crée un fichier source (.cpp) devront alors avoir le code compilé et lié à l'application si elle va être utile.

+0

Merci pour la réponse détaillée! Maintenant, il semble évident, mais quand j'ai fait face à ce problème, ce n'était pas si clair. J'ai donc décidé d'ajouter cette question et de répondre sur SO. – Ilya

0

Ce n'est pas un problème, mais un moment spécifique: QUiLoader ne charge jamais les données des fichiers .qrc décrits dans les fichiers .ui. La bonne solution est donc d'inclure le fichier .qrc dans votre projet actuel. Cela semble étrange (parce que vous avez déjà inclus un lien vers le fichier .qrc dans votre fichier .ui), mais c'est un moment spécifique dans l'utilisation de QUiLoader.

Questions connexes