2010-11-05 5 views
0

D'une façon ou d'une autre, ma MainWindow dans mon projet qt est devenue non liée à .ui que j'ai créée dans qt designer (j'utilise qt creator comme IDE). Le fichier de mise en œuvre n'ont à la fois:La classe Qt est-elle déconnectée de son fichier .ui?

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

Mais si j'ajoute un widget (par exemple, un lineEdit) dans l'interface utilisateur dans le concepteur, si j'essaie de tout faire avec ce widget dans ma mise en œuvre, je reçois une erreur (et bien sûr, la saisie semi-automatique ne détecte pas ce widget).

Quelqu'un peut-il vous aider? S'il vous plaît laissez-moi savoir si ce n'est pas assez descriptif. Merci!

[EDIT] Cela semble être un problème avec mon passage de qt 4.6 à qt 4.7. Dans Qt4.6, les fichiers d'en-tête générés pour l'interface utilisateur ont été placés dans le même répertoire que le projet. Dans Qt4.7, il les place dans le répertoire de construction. J'avais donc des fichiers d'en-tête mis à jour, mais mon programme était lié au mauvais. Malheureusement, je n'arrive pas à le lier aux bons fichiers d'en-tête maintenant. Des idées?

+0

Je n'ai pas utilisé Qt Designer, mais peut-être que cela aiderait à "uic" le fichier d'interface utilisateur modifié? (Peut être fait via une option de menu IDE, ou avec l'outil 'qmake' de la ligne de commande, ou avec une commande manuelle' uic'.) – aschepler

+0

Bien le fichier d'en-tête existe (et semble être mis à jour si je change quelque chose faire une construction générale), et mes autres interfaces sont bien aussi. Je vais donner un coup de feu, cependant. – Joseph

+0

vérifiez votre fichier .pro pour l'entrée 'UI_DIR' ... en avez-vous un ?, si oui, quel est son réglage? – smerlin

Répondre

1

En supposant un projet basé sur qmake par défaut, lorsque vous créez un nouveau fichier, vous avez la possibilité de choisir si oui ou non il est ajouté au projet. Vous choisissez cette option sous la forme d'une case à cocher "Ajouter au projet" dans la boîte de dialogue "Gestion de projet".

Pour vous assurer que le formulaire est géré par QtCreator, modifiez votre fichier de projet .pro afin qu'il voit le fichier .ui en ajoutant une entrée à FORMS. Par exemple, si vous avez une forme, mainwindow.ui, et un second newdialog.ui qui doit être ajouté, vous pouvez le modifier en utilisant l'une des options suivantes:

Option 1:

FORMS += mainwindow.ui \ 
    newdialog.ui 

Option 2:

FORMS += mainwindow.ui newdialog.ui 

Option 3:

FORMS += mainwindow.ui 
FORMS += newdialog.ui 

La première option est utilisé par QtCreator 1.3.1.

Tant que les fichiers ui sont enregistrés dans FORMS, les fichiers makefiles générés par qmake doivent être suffisants pour la version actuelle, à savoir Qt-4.6 ou Qt-4.7.

+0

J'avais déjà mes formulaires + = mainwindow.ui etc.ui. Le problème était qu'il était lié au mauvais ui_x.h généré et l'ajout de UI_DIR = ../src/ semble l'avoir corrigé. Merci pour la contribution. – Joseph

+1

Le point que j'ai essayé de faire vers la fin de mon post était que si vous deviez régénérer vos makefiles à partir de votre fichier .pro, tout devrait fonctionner correctement sans avoir besoin de spécifier un UI_DIR ou d'autres options. Les makefiles générés sont spécifiques à la version de qmake (et à leur version qt correspondante) qui les a générés. –