2016-07-24 2 views
1

Je suis conscient qu'il y a quelques questions posées en ligne sur des questions similaires mais malheureusement aucune d'entre elles m'a aidé à résoudre ce problème relativement simple, comme le suggère le titre.qmake n'invoque pas uic

Je mis en place un projet Qt minimal dans lequel le problème se produit:

├── main.cpp 
├── mainwindow.ui 
└── qt.pro 

main.cpp:

#include <QtWidgets/QtWidgets> 
#include "ui_mainwindow.h" 

int main() { 
    return 0; 
} 

qt.pro:

TEMPLATE = app 
TARGET = qt-qmake-uic-problem 
INCLUDEPATH += . 

# Input 
FORMS += mainwindow.ui 
SOURCES += main.cpp 

Le fichier mainwindow. L'interface utilisateur est le formulaire MainWindow par défaut fourni par Qt Creator.

Maintenant, si je lance

qmake qt.pro 

alors un Makefile est créé provoquant cette erreur lorsque make est exécuté:

[[email protected] qt-qmake-uic-problem]$ make 
g++ -c -pipe -O2 -march=i686 -mtune=generic -O2 -pipe -fstack-protector-strong -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I. -I. -isystem /usr/include/qt -isystem /usr/include/qt/QtGui -isystem /usr/include/qt/QtCore -I. -I/usr/lib/qt/mkspecs/linux-g++ -o main.o main.cpp 
main.cpp:2:28: fatal error: ui_mainwindow.ui: No such file or directory 
#include "ui_mainwindow.h" 
          ^
compilation terminated. 
make: *** [Makefile:298: main.o] Error 1 

Selon ma connaissance ui_mainwindow.h doivent être générés soit par qmake ou par le Makefile - pas par moi-même invoquant uic manuellement. Je dois noter que quelque chose de similaire se produit aussi avec moc et faisant mes recherches. Je n'ai pas trouvé d'explication ni dans la documentation ni dans des problèmes similaires, bien qu'il serait étrange que cette installation de qmake soit cassée - Je cours Arch Linux et obtenu Qt SDK à partir du référentiel par défaut.

Merci beaucoup pour votre aide dans les conseils!

+0

Essayez d'inclure 'mainwindow.ui' au lieu de' ui_mainwindow.ui' – wasthishelpful

+0

Merci pour votre réponse rapide! Malheureusement, cela n'a pas fonctionné et les résultats sont les mêmes. Aucun fichier n'a été généré et g ++ a lancé une erreur "no such file or directory". –

+1

@wasthishelpful, c'est * 'ui_mainwindow.h' *. Il est illogique d'inclure le fichier xml 'mainwindow.ui' dans le fichier cpp' main.cpp' – Mike

Répondre

1

En supposant que vous utilisez QT-5:

Si vous souhaitez utiliser des éléments de l'interface utilisateur Linke un QMainWindow ou d'autres widgets QT, vous devez activer des widgets en général dans la configuration de votre projet:

QT += widgets 

Cette puis active le traitement du contenu FORMS comme mainwindow.ui dans votre exemple, et provoque que votre code soit lié aux bibliothèques correctes.

Voir aussi ici: http://doc.qt.io/qt-5/qtwidgets-index.html

+0

Merci beaucoup! Je pensais si j'avais déjà essayé cette solution, et j'ai écrit Qt + = dans un autre projet au lieu de QT + =. Problème résolu :) –