[gelöst] Einbinden von Dialogen in Programmcode

Alles rund um die Programmierung mit Qt
Antworten
Thomas
Beiträge: 45
Registriert: 9. September 2005 16:26

[gelöst] Einbinden von Dialogen in Programmcode

Beitrag 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
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag 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.
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag 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.
Thomas
Beiträge: 45
Registriert: 9. September 2005 16:26

Beitrag 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
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

ich benutze auch den gcc haste die neuste Version von MinGW? Und welche Qt Version haste?
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Ist dann der Rest auch abgeschrieben, oder kopiert? Denn am Ende des Header ist ein Doppelpunkt, kein Strichpunkt.
Thomas
Beiträge: 45
Registriert: 9. September 2005 16:26

Beitrag 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
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag 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.
Thomas
Beiträge: 45
Registriert: 9. September 2005 16:26

Beitrag 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
Dateianhänge
Test.rar
(7.79 KiB) 157-mal heruntergeladen
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag 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.
Thomas
Beiträge: 45
Registriert: 9. September 2005 16:26

Beitrag von Thomas »

... es hat nun funktioniert. Danke für die Hilfe und die Tipps. Ich werde sie befolgen.

Thomas
Antworten