SIGNALs, SLOTs und die lieben Zeiger
Verfasst: 21. Juni 2011 16:09
Moin moin,
derzeit probiere ich folgendes zu realisieren (Auszug):
In der Mainfunktion erstelle ich sowohl von a, als auch b ein Objekt und verbinde die dann mit einem connect:
Die Methode b::stop() wird über einen Button aufgerufen. Mein Problem ist jetzt, dass mein Slot sendData nie zum Einsatz kommt. Sprich, wenn ich dort ein einfaches printf() reinbaue, gibt dies nichts aus. Wenn ich jetzt aber den Übergabeparameter QByteArray *data herausnehme oder statt diesem ein einfaches char data verwende geht alles prima; nur dass ich meine Daten von dem Signal nicht an den Slot übergeben bekomme. Da ich auch selbige Probleme mit einem Pointer char *data habe frage ich mich ob Signale und Slots einfach keine Pointer übergeben bekommen dürfen.
Kann mir hier jemand bitte weiterhelfen? Im Internet habe ich leider nichts befriedigendes gefunden.
Also noch einmal zusammengefasst:
sendData(char data) --> funktioniert mit entsprechendem Signal
sendData(char *data) --> funktioniert nicht und mein gewünschtes
sendData(QByteArray *data) --> geht leider gar nicht.
Viele Grüße und besten Dank im Voraus
Mr_Burns
derzeit probiere ich folgendes zu realisieren (Auszug):
Code: Alles auswählen
//a.h
#ifndef A_H
#define A_H
#include <QObject>
class a : public QObject {
Q_OBJECT
public:
a();
~a();
protected slots:
void sendData(QByteArray *data);
};
#endif // a_HCode: Alles auswählen
// a.cpp
#include "a.h"
a::a() {
}
a::~a() {
}
void a::sendData(QByteArray *data) {
// naja, hier mache ich dann halt was mit meinen Daten
}
Code: Alles auswählen
//b.h
#ifndef B_H
#define B_H
#include <QObject>
class b : public QObject{
Q_OBJECT
public:
explicit b();
~b();
signals:
void sendToUart(QByteArray *data);
public slots:
void stop();
};
#endif // b_HCode: Alles auswählen
//b.cpp
#include "b.h"
b::b() {
}
b::~b() {
}
void b::stop() {
QString data = "Hallo";
QByteArray strAscii;
strAscii.append(data.toAscii());
emit sendToUart(&strAscii);
}
Code: Alles auswählen
connect(obj_b, SIGNAL(sendToUart(QByteArray *data)), obj_a, SLOT(sendData(QByteArray *data)));Kann mir hier jemand bitte weiterhelfen? Im Internet habe ich leider nichts befriedigendes gefunden.
Also noch einmal zusammengefasst:
sendData(char data) --> funktioniert mit entsprechendem Signal
sendData(char *data) --> funktioniert nicht und mein gewünschtes
sendData(QByteArray *data) --> geht leider gar nicht.
Viele Grüße und besten Dank im Voraus
Mr_Burns