[gelöst] SLOT Problem

Verschiedenes zu Qt
Antworten
CSchirner
Beiträge: 63
Registriert: 14. Dezember 2006 11:05

[gelöst] SLOT Problem

Beitrag von CSchirner »

Hätte nie gedacht das ich jemals schwierigkeiten mit den SIGNAL/SLOT konzept habe,,,, aber irgendwie haut was nicht hin, wie ich es gerne haben würde ;)

aaalso..

ich habe eine Klasse ausgang, die public von QLabel erbt

class Ausgang : public QLabel

diese beinhaltet Slots..

private slots:
void slotRename(void);

Jetzt habe ich Im Konstruktor:
Ausgang::Ausgang(const QString &text, QWidget *parent) : QLabel(text, parent)

folgendes gemacht:

connect(objAction, SIGNAL(triggered()), this, SLOT(slotRename()));

Im Ausgabefenster des Compilers steht:

Object::connect: No such slot QLabel::slotRename()

Die Frage ist jetzt... warum sucht der den Slot im "QLabel"? Dort gibts sicher keinen :/

Hat jemand zufällig ne antwort... hab auch schonmal verzweifelterweise versucht den this pointer zu (Ausgang*) zu casten :P


Vielen Dank schonmal für eure Antworten

MFG
Christopher Schirner
Zuletzt geändert von CSchirner am 11. Juli 2007 12:51, insgesamt 1-mal geändert.
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag von Volker »

Hast Du ein Q_OBJECT in deiner Klassendeklaration?
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
NoobSaibot
Beiträge: 99
Registriert: 27. Januar 2005 15:55

Beitrag von NoobSaibot »

hast du das Q_OBJECT Makro eingebunden?
CSchirner
Beiträge: 63
Registriert: 14. Dezember 2006 11:05

Beitrag von CSchirner »

muss ich das in meiner vererbten klassse auch mit reinpacken?

Sobald ich das mit reinpack...

d:\Cpp\Ausgang.h(9): error C2504: 'QLabel': Basisklasse undefiniert
d:\Cpp\Ausgang.h(13): error C2143: Syntaxfehler: Es fehlt ';' vor 'public'
d:\Cpp\Ausgang.h(13): error C2501: 'Ausgang::Q_OBJECT': Fehlende Speicherklasse oder Typspezifizierer
d:\Cpp\Ausgang.h(14): error C2226: Syntaxfehler: Typ 'Ausgang' nicht erwartet
d:\Cpp\Ausgang.h(14): error C2238: Unerwartete(s) Token vor ';'
d:\Cpp\Ausgang.h(21): error C2061: Syntaxfehler: Bezeichner 'QMouseEvent'
d:\Cpp\Ausgang.h(24): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'labelText'
d:\Cpp\Ausgang.h(24): error C2501: 'Ausgang::QString': Fehlende Speicherklasse oder Typspezifizierer
d:\Cpp\Ausgang.h(24): error C2501: 'Ausgang::labelText': Fehlende Speicherklasse oder Typspezifizierer
d:\Cpp\Ausgang.h(25): error C2143: Syntaxfehler: Es fehlt ';' vor '*'
d:\Cpp\Ausgang.h(25): error C2501: 'Ausgang::QMenu': Fehlende Speicherklasse oder Typspezifizierer
d:\Cpp\Ausgang.h(25): error C2501: 'Ausgang::pContextMenu': Fehlende Speicherklasse oder Typspezifizierer
d:\Cpp\Ausgang.h(28): error C2146: Syntaxfehler: Fehlendes ':' vor Bezeichner 'slots'
d:\Cpp\Ausgang.h(29): error C2062: 'void'-Typ unerwartet
d:\Cpp\Ausgang.h(29): error C2238: Unerwartete(s) Token vor ';'
d:\Cpp\GeneratedFiles\Debug\moc_Ausgang.cpp(12): fatal error C1189: #Fehler: "The header file 'Ausgang.h' doesn't include <QObject>."


:D
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag von Volker »

Ja das musst Du mit reinpacken wenn Du in Deiner Klasse signale oder slots verwenden willst.

Du hast aber schon ein #include <Qt/qlabel.h> bei Dir in der Header Datei oder?

Allgemein sagen die Compilerfehlermeldungen nur, dass Du einen Syntaxfehler drin hast, evtl. aber auch nur aufgrund einer unbekannten Klassendeklaration. Ohne Code lässt sich das aber nur schwer sagen.
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
CSchirner
Beiträge: 63
Registriert: 14. Dezember 2006 11:05

Beitrag von CSchirner »

#include <QLabel> hab ich in der headerdatei...
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag von Volker »

dann kann ich dir ohne deine Header Datei gesehen zu haben nicht weiterhelfen
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
CSchirner
Beiträge: 63
Registriert: 14. Dezember 2006 11:05

Beitrag von CSchirner »

#ifndef AUSGANG_H
#define AUSGANG_H

class Ausgang : public QLabel
{

Q_OBJECT

public:
Ausgang(const QString &text, QWidget *parent);
~Ausgang(void);

void setOutput(unsigned int unOutput);
unsigned int getOutput(void);

protected:
void mousePressEvent(QMouseEvent *event);

private:
QString labelText;
QMenu *pContextMenu;
unsigned int unOutput;

private slots:
void slotRename(void);
void slotDelete(void);
void slotChange(void);
};

#endif


das wäre die HeaderDatei von "Ausgang"
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

#include <QLabel> hab ich in der headerdatei...
Wo?
CSchirner
Beiträge: 63
Registriert: 14. Dezember 2006 11:05

Beitrag von CSchirner »

#include <QFileDialog>
//#include <QtGui>
#include <QString>
#include <QtGui/QMainWindow>
#include <QDrag>
#include <QList>
#include <QMimeData>
#include <QLabel>
#include <QtGui>
#include <vector>
#include <QMessageBox>
#include <QtXml/QDomDocument>
#include <QtXml/QDomElement>
#include <QtXml/QDomNode>

using namespace std;
//#include <QtGui/QApplication>

#include "defines.h"
#include "TempSensor.h"
#include "Ausgang.h"
#include "DragTab.h"

Da in der main.h :)
NoobSaibot
Beiträge: 99
Registriert: 27. Januar 2005 15:55

Beitrag von NoobSaibot »

das muß in deiner ausgang.h stehen und nicht da, wo du die ausgang.h inkludierst.
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag von Volker »

Und woher soll der Compiler das in der Ausgang.h wissen?
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
CSchirner
Beiträge: 63
Registriert: 14. Dezember 2006 11:05

Beitrag von CSchirner »

Okay sorry... *müde*

Aber wenn ichs dann einbind in der headerdatei...

VaritecDesigner error LNK2019: Nicht aufgelöstes externes Symbol '"private: void __thiscall Ausgang::slotChange(void)" (?slotChange@Ausgang@@AAEXXZ)', verwiesen in Funktion '"public: virtual int __thiscall Ausgang::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@Ausgang@@UAEHW4Call@QMetaObject@@HPAPAX@Z)'
VaritecDesigner error LNK2019: Nicht aufgelöstes externes Symbol '"private: void __thiscall Ausgang::slotDelete(void)" (?slotDelete@Ausgang@@AAEXXZ)', verwiesen in Funktion '"public: virtual int __thiscall Ausgang::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@Ausgang@@UAEHW4Call@QMetaObject@@HPAPAX@Z)'
VaritecDesigner fatal error LNK1120: 2 unaufgelöste externe Verweise


:(
NoobSaibot
Beiträge: 99
Registriert: 27. Januar 2005 15:55

Beitrag von NoobSaibot »

du mußt den SLOT auch *implementieren*.
CSchirner
Beiträge: 63
Registriert: 14. Dezember 2006 11:05

Beitrag von CSchirner »

Vielen Dank für eure mühe... jetzt klappts...

Ich sollte mir das mit meinen includes nummal anschauen...

vielen vielen dank
Antworten