Seite 1 von 1

Designer erkennt eigene Klasse nicht [gelöst]

Verfasst: 25. August 2008 13:51
von Label
Hallo Leute,

ich habe im Designer von Qt4 eine ui erstellt. Ich habe eine Klasse 'MyLabel' von QLabel abgeleitet und eingebunden. In der automatisch erstellten ui_*.h :

Code: Alles auswählen

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QLabel>
#include <QtGui/QWidget>
#include "mylabel.h"   //<-- mein Klasse ;)

class BlubbClass
{
public:
    QWidget *widget;
    QLabel *label;
    QLabel *label_7; //<-- funktioniert
    MyLabel *label_14; //<-- funktioniert nicht
    QWidget *widget_2;
    QLabel *label_2;
...
bekomme ich folgende Fehler:
>>label_14<< wurde in diesem Gültigkeitsbereich nicht definiert
expected type-specifier before >>MyLabel<<

ich verstehe nicht warum er das nicht kennt. Schließlich hat er den Code selbst erstellt, die Filenamen stimmen auch alle.

Woran kann das liegen?

Danke im Voraus

Verfasst: 25. August 2008 14:09
von Christian81
myLabel ist imho im Namespace Ui::
Schau doch einfach mal im generierten .h - File nach - so schwierig wird das ja nicht sein :)

Verfasst: 25. August 2008 14:51
von Label
Das Problem ist nicht das ich nicht auf MyLabel zugreifen kann weil es im Ui namespace liegt.

Ich habe dieses MyLabel einfach nur im Designer eingefügt und nichts weiter gemacht, also ich verwende diese Variable noch nicht. Der Code oben ist aus der ui_blubb.h

Der Compiler kennt bei "MyLabel *label_14;" die MyLabel-Klasse nicht

Verfasst: 25. August 2008 15:13
von Christian81
Wenn es in mylabel.h eine Klasse namens MyLabel gibt, so kompiliert der Code auch!

Verfasst: 25. August 2008 15:23
von Label
Das habe ich auch gedacht, er macht es aber nicht

mylabel.h:

Code: Alles auswählen

#ifndef MYLABEL_H_
#define MYLABEL_H_

#include "includes.h"

class MyLabel : public QLabel
{
	Q_OBJECT

private:
	bool pressed;
	QString pic;
	QString pic_pr;
	QString pic_ue;
	unsigned int x;
	unsigned int y;

public:
	MyLabel();
	MyLabel(QString Picname, QString Picname_pressed, int X, int Y);
	MyLabel(QString Picname, QString Picname_pressed, QString Picname_disabled, int X, int Y);
	virtual ~MyLabel();

public slots:
	void togglePressed();
	void toggleEnabled();

signals:
	void clicked();

protected:
	void mouseReleaseEvent(QMouseEvent *event);
};


#endif /* MYLABEL_H_ */

Verfasst: 26. August 2008 10:36
von Label
OK ich hab es funzt jetzt. Hatte vergessen in der ui.h ne Vorwärtsdeklaration auf MyLabel zu machen :)