[gelöst] Änderung eines GUI-Objektes in ausgelagerter Klasse
Verfasst: 9. September 2009 14:43
Hallo Forum,
Ich habe ein Problem mit einem Slotaufruf in einer handling-Klasse, die für mich Elemente einer gui verändern soll.
Ich habe meine Basisklasse so angelegt:
Die Handling Klassendefinition sieht wie folgt aus:
Ich lege im Konstruktor der Basisklasse ein Objekt der Handling-Klasse an und verbinde das Signal void sigScrollAbcDown(); mit dem Slot void abcScrollDown:
Dann will ich im Slot selbst ein Textlabel der ui ändern:
Kompiler meckert nicht und sonst läuft mein Programm supi aber wenn dieser slot ausgelöst wird stürzt das Programm ohne Rückmeldung einfach ab.
Woran kann das liegen? Greife ich auf irgendwelche falschen Speicherbereiche zu?
Vielen Dank
Mfg Gorion
Ich habe ein Problem mit einem Slotaufruf in einer handling-Klasse, die für mich Elemente einer gui verändern soll.
Ich habe meine Basisklasse so angelegt:
Code: Alles auswählen
#ifndef KLINGELFELD_H
#define KLINGELFELD_H
#include <QString>
#include <QObject>
#include <QTcpServer>
#include <QString>
#include "ui_KlingelFeld.h"
#include "klingelfeldxml.h"
#include "klingelfeldhandling.h"
class KlingelFeld : public QMainWindow, public Ui::KlingelFeld
{
Q_OBJECT
public:
KlingelFeld(QMainWindow *parent = 0);
~KlingelFeld();
void readXML();
public slots:
void displaySockError(int socketError, const QString &message);
void newText(const QString &labText);
void startClientConnection();
void readSocket();
void selectHandle(QString handle);
signals:
void error(int socketError, const QString &message);
void getText(const QString &text);
void sigshowABC();
void sigshowNum();
void sigScrollAbcDown();
private:
Ui::KlingelFeld ui;
QString address;
quint16 port;
int socketDescriptor;
QTcpServer Server;
QTcpSocket *client;
KlingelFeldXML *xmlData;
};
#endif
Code: Alles auswählen
#ifndef KLINGELFELDHANDLING_H
#define KLINGELFELDHANDLING_H
#include <QObject>
#include <QString>
#include "klingelfeldxml.h"
#include "KlingelFeld.h"
#include "klingelfelddata.h"
class KlingelFeld;
class KlingelFeldHandling : public QObject
{
Q_OBJECT
KlingelFeld *myFeld;
public:
KlingelFeldHandling(KlingelFeld*){}
~KlingelFeldHandling(){}
public slots:
void abcScrollDown();
};
#endif // KLINGELFELDHANDLING_H
Code: Alles auswählen
KlingelFeld::KlingelFeld(QMainWindow *parent)
: QMainWindow(parent)
{
setupUi(this);
KlingelFeldHandling *handling = new KlingelFeldHandling(this);
....
....
connect(this,SIGNAL(sigScrollAbcDown()),handling,SLOT(abcScrollDown()));
Code: Alles auswählen
void KlingelFeldHandling::abcScrollDown(){
myFeld->nameLab_1->setText("Michael");
}
Woran kann das liegen? Greife ich auf irgendwelche falschen Speicherbereiche zu?
Vielen Dank
Mfg Gorion