Seite 1 von 1

[gelöst] Einbinden von Dialogen in Programmcode

Verfasst: 27. September 2005 16:38
von Thomas
Hallo,

ich habe mit Qt Designer einen Dialog erstellt und möchte ihn nun mit Leben füllen bzw. danach in mein Programm einbinden. Ich habe mit Hilfe der Einzelvererbungsmethode eine eigene Unterklasse erstellt, die den Dialogunterbau enthalten soll. Beim Kompelieren erhalte ich jedoch ständig folgende Fehlermeldung:

In file included from MDiApplication\cameraeditor.cpp
using-declaration for non-member at class scope
expected ' befor "ui"


Der Code meiner Header-Datei sieht folgender Maßen aus:

#ifndef CAMERAEDITOR_H
#define CAMERAEDITOR_H

#include "ui_cameraeditor.h"

class QStringList;

class CameraEditorDialog : public QDialog
{
Q_OBJECT

public:
CameraEditorDialog();
~CameraEditorDialog() {};

private slots:
void on_AddButton_clicked();
void on_EditButton_clicked();

private:
Ui::CameraEditorDialog ui; --> der fehler scheint in dieser Zeile zu liegen ?
QStringList *stringList;
}:
#endif


Meine Cpp-Datei:

#include <QtGui>

#include "cameraeditor.h"

CameraEditorDialog::CameraEditorDialog()
{
ui.setupUi(this);

stringList = new QStringList(this);
...
}


Kann mir jemand sagen, wo der Fehler liegen könnte?

Danke!

Gruß

Thomas

Verfasst: 27. September 2005 18:48
von FlorianBecker
Was benutzt du denn für einen Compiler? Gibt er dir denn keine Zeile aus? Außerdem sagt er befor anstatt von before wie ich es erwartet hätte.

Also auf den ersten Blick habe ich keinen Fehler gefunden.

Verfasst: 27. September 2005 19:56
von BartSimpson
hast du den Eintrag FORMS = Dialoge/HauptBasis.ui in deiner .pro Datei??
Und denn einmal qmake laufen lassen? Sonst sieht der Code ok aus. Falls du im Dessiger QDialog als Basis gewählt hast.

Verfasst: 27. September 2005 23:29
von Thomas
Hallo,

ich verwende MinGw GCC. Die Sache mit dem "befor" war ein Schreibfehler von mir. Richig heist es natürlich "before". Der Fehler liegt irgendwie in dieser Zeile: Ui::CameraEditorDialog ui;

Ich habe die *.ui Datei in meiner Projektdatei eingetragen und auch qmake darüber laufen lassen. Dieses Probem ist bei mir schon bei anderen mit Qt Designer erstellten Dialogen aufgetreten, ohne dass ich eine Lösung gefunden habe.

Gruß

Thomas

Verfasst: 27. September 2005 23:32
von BartSimpson
ich benutze auch den gcc haste die neuste Version von MinGW? Und welche Qt Version haste?

Verfasst: 27. September 2005 23:36
von FlorianBecker
Ist dann der Rest auch abgeschrieben, oder kopiert? Denn am Ende des Header ist ein Doppelpunkt, kein Strichpunkt.

Verfasst: 28. September 2005 09:02
von Thomas
Hallo,

ich benutze die neuste Version von MinGW und Qt 4.0.1. Die Codefragmente sind kopiert, allerdings ist der Doppelpunkt per Hand eingefügt, so dass er auch ein Tippfehler ist. In meinem Programm verwende ich einen Strichpunkt. Der Rest stimmt hoffentlich.

Thomas

Verfasst: 28. September 2005 09:15
von FlorianBecker
Poste mal bitte die UI Datei, die pro Datei und die Header und Sourcen. Ich will das mal selber bauen. Ich kann nämlich wirklich nichts finden. Einfach ein ZIP Archiv (zip, rar, tar.gz, tar.bz2 - egal) machen und anhängen, oder mir direkt per eMail senden.

Verfasst: 28. September 2005 10:09
von Thomas
Hallo,

ich habe die Dateien angehängt. Sie stammen von einem ähnlichen Beispiel, bei dem ich das gleiche Problem (identische Fehlermeldung) habe.

Als Anmerkung: ich habe die ui-Datei manuell mit uic bearbeitet, da ich mit qmake keine ui_xxx.h-Datei erhalten habe (auch wenn die ui-Datei in der Projektdatei unter FORMS eingetragen war.

Im Anschluß habe ich noch einmal qmake -project und qmake xxx.pro durchlaufen lassen bevor ich es mit make bzw. in Dev C++ kompeliert habe.

Danke!

Thomas

Verfasst: 28. September 2005 10:32
von FlorianBecker
Ganz schön ungesund, was du da getan hast.

Die Klasse aus dem GUI heißt cameraForm nicht, CameraForm wie du es definiert hast. Das ist der ganze Fehler.

Allerdings solltest du einige Dinge ändern:
Die UI Datei in z.B. cameraformwidget.ui umbenennen und als generierte Datei ui_cameraformwidget.h einbinden, dann sollte qmake die automatisch generieren. Und ebenfalls den Klassennamen natürlich dann auch in CameraFormWidget o.ä. ändern.

Viel Erfolg.

Verfasst: 28. September 2005 11:32
von Thomas
... es hat nun funktioniert. Danke für die Hilfe und die Tipps. Ich werde sie befolgen.

Thomas