[gelöst] qmake erstellt keine *.h Datei aus *.ui

Alles rund um die Programmierung mit Qt
Antworten
feldmaus
Beiträge: 32
Registriert: 25. September 2007 21:08

[gelöst] qmake erstellt keine *.h Datei aus *.ui

Beitrag von feldmaus »

Hi Alle,

ich probiere gerade meine mit Qt4-Designer erstellte Anwendung auszutesten. Es handelt sich um ein QMainWindow Objekt in dem eine MDI (QMdiArea) mit zwei SubWindows(QWidget) Klassen platziert sind. Meine UI-Datei heisst UI/hauptfenster.ui und die Klasse heisst HauptFenster. Dazu habe ich wie in meinem QT4 Buch beschrieben folgende Dateien erstellt:

src/main.cpp

Code: Alles auswählen

#include <QApplication>
#include <QMainWindow>
#include "../include/hauptfenster.h"

using namespace std;

int main(int argc, char *argv[])
{
  QApplication app(argc, argv);
  
  HauptFenster ui;
  QMainWindow *hauptfenster = new QMainWindow;
  ui.setupUI(hauptfenster);
  hauptfenster->show();
  
  return app.exec();
}
src/hauptfenster.cpp

Code: Alles auswählen

#include <QtGui>
#include "../include/hauptfenster.h"

HauptFenster::HauptFenster(QWidget *parent):QMainWindow(parent)
{
  setupUI(this);
}

include/hauptfenster.h

Code: Alles auswählen

#ifndef HAUPTFENSTER_H
#define HAUPTFENSTER_H

#include <QMainWindow>
#include "../UI/ui_hauptfenster.h"

class HauptFenster : public QMainWindow, public UI::HauptFenster
{
  Q_OBJECT

    public:
  HauptFenster(QWidget *parent = 0);

};

#endif
Meine Ordner-Struktur sieht zur Zeit so aus:

Code: Alles auswählen

.
|-- UI
|   `-- hauptfenster.ui
|-- doc
|   |-- README.odt
|   |-- README.txt~
|   |-- punkt-in-polygon.pdf
|   `-- search_intersect.ppt
|-- include
|   `-- hauptfenster.h
|-- src
|   |-- hauptfenster.cpp
|   `-- main.cpp
|-- uml
|   |-- 129282.diagram
|   |-- 2.session
|   |-- cpp_includes
|   |-- generation_settings
|   |-- idl_includes
|   |-- install.sh
|   |-- install.sh~
|   |-- java_imports
|   |-- meisterhilfe.pro
|   |-- python_imports
|   |-- stereotypes
|   |-- tools
|   `-- uml.prj
|-- Makefile
|-- install.sh
|-- install.sh~
`-- meisterhilfe.pro
Ich habe qmake -project -d && qmake *.pro -d ausgeführt, aber es wurde keine ui_hauptfenster.h erstellt und Fehlermeldungen habe ich auch keine bekommen. Laut meiner Datei meisterhilfe.pro hat er zumindest meine *.cpp und *.h Dateien gefunden.

Code: Alles auswählen

. . .
# Input
HEADERS += include/hauptfenster.h
FORMS += UI/hauptfenster.ui
SOURCES += src/hauptfenster.cpp src/main.cpp
Hat Jemand eine Idee was ich falsch mache?

Grüße Markus
Zuletzt geändert von feldmaus am 3. Juni 2010 11:25, insgesamt 1-mal geändert.
feldmaus
Beiträge: 32
Registriert: 25. September 2007 21:08

Beitrag von feldmaus »

Kann es sein, dass ich

Code: Alles auswählen

qmake -project
qmake *.pro
make
mv *.h include/
make
mv *.h include/
ausführen muss?

Ich dachte das qmake ersetzt das make komplett?

Die Datei ui_hauptfenster.h wird erst bei Aufruf von make erzeugt. Wie bekomme ich diese Datei nach include/ während des kompilierens? Da muss es doch einen guten Wege geben? Ich habe diese manuell nach include/ kopiert, eine Dauerlösung ist das jedenfalls nicht.

Grüße Markus
Chris81T
Beiträge: 82
Registriert: 4. Mai 2008 00:06
Wohnort: Urbar

Beitrag von Chris81T »

Hallo,

ja es ist richtig: qmake ersetzt nicht make.

Laut deinen Posts versuchst du, dein Qt Projekt "händisch" aufzuziehen?! Okay, dann kann ich dir nur wärmstens die qmake reference / tutorial / manual empfehlen. Findest du alles in deinem Qt Assistant.
Hilfestellung zu deinem UI Problem: In der Reference findest du die Variable UI_DIR.

Weiterhin kann ich dir auch den Qt Creator empfehlen. Es ist ein gutes Werkzeug zum Entwickeln. Eventuell hilft es damit ein neues Test-Projekt anhand der Assistenten aufzuziehen um zu sehen, was genau eingerichtet wird. Vielleicht bringt es dir was (und macht auch noch auf einmal Spaß mit dem Creator zu arbeiten :D )

EDIT:
Falls du den Qt Creator nutzen solltest, gibt es auch dort ein zugehöriges Manual, mit dem du Schritt für Schritt begleitet wirst.

Viel Erfolg!
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

feldmaus hat geschrieben:Kann es sein, dass ich

Code: Alles auswählen

qmake -project
qmake *.pro
make
mv *.h include/
make
mv *.h include/
ausführen muss?
Nein. Definitiv nicht. "-project" erstellt immer eine neue pro-File, was beim Projektstart zwar hübsch ist, aber im späteren Verlauf stört (weil eigene Einstellungen wieder entfernt werden). Beim Entwickeln also nur noch:

Code: Alles auswählen

 qmake
 make
Zum anderen "Problem": Eigentlich stoeren die generierten Dateien ja nicht (moc_*, ui_*, *.o). Falls du den Ausgabe-Pfad jedoch unbedingt ändern möchtest, kannst du die zahreichen qmake-Variabeln verwenden.
Siehe: http://doc.qt.nokia.com/4.6/qmake-varia ... tml#ui-dir

Neben UI_DIR wuerde ich in deinem Fall auch noch INCLUDEPATH (http://doc.qt.nokia.com/4.6/qmake-varia ... ncludepath) setzen, so dass du dir die relativen include-Angaben sparen kannst (#include "hauptfenster.h" anstelle "#include "../include/hauptfenster.h").

hth..

[EDIT] habe den UI_DIR-Hinweis von Chris81T ueberlesen.. :wink:
feldmaus
Beiträge: 32
Registriert: 25. September 2007 21:08

Beitrag von feldmaus »

feldmaus hat geschrieben:Die Datei ui_hauptfenster.h wird erst bei Aufruf von make erzeugt. Wie bekomme ich diese Datei nach include/ während des kompilierens? Da muss es doch einen guten Wege geben? Ich habe diese manuell nach include/ kopiert, eine Dauerlösung ist das jedenfalls nicht.
Habe in meine *.pro Datei folgendes ergänzt:

Code: Alles auswählen

UI_HEADERS_DIR = include
UI_SOURCES_DIR = src
OBJECTS_DIR = tmp
MOC_DIR = tmp
damit wird der ganze Schmuh dort hin geschrieben wo er hingehört.
Somit muss ich nur noch qmake && make ausführen

Grüße Markus
Antworten