Seite 1 von 1

[Geloest] Variable verliert ihren Wert

Verfasst: 13. Januar 2008 07:25
von gboelter
Ich habe gerade ein boeses Verstaendnisproblem, was moeglicherweise eher meinen bescheidenen Kenntnissen in der OOPS Programmierung denn QT zu verdanken ist.

Also, ich habe u. a. die drei folgenden Dateien:

Code: Alles auswählen

// main.cpp
#include <QApplication>
#include "Erpel.h"

int main( int argc, char* argv[]) {
    QApplication app(argc, argv);

    Erpel myErpel;
    myErpel.show();

    return app.exec();
}

Code: Alles auswählen

//Erpel.cpp
#include <QtGui>
// hier folgt weiterer Code ....
#include "Erpel.h"

Erpel::Erpel(QWidget *parent) : QMainWindow( parent )
{
    setupUi(this);
    // hier folgt weiterer Code ....

    connect( actionQuit,SIGNAL (triggered()), this, SLOT(slotClose()) );
    // hier folgt weiterer Code ....
}

Code: Alles auswählen

// Erpel.h
#ifndef ERPEL_H
#define ERPEL_H

#include <QString>
#include "ui_erpel.h"

class Erpel : public QMainWindow, public Ui::Erpel
{
    Q_OBJECT

public:
    Erpel (QWidget * parent = 0);
    ~Erpel();

    QString currentMandant;
    // hier folgt weiterer Code ....
#endif
Mein Problem ist die Variable "QString currentMandant", der entsprechend der Auswahl durch den Benutzer ein Wert zugewiesen wird.

Doch immer, wenn der Benutzer in der mittels Designer erstellten Gui in eine andere Maske wechselt, verliert diese Variable ihren Wert, weil vermutlich die Erpel.h neu abgearbeitet wird.

Ich weiss, die Frage ist schon fast peinlich und in reinem C/C++ haette ich da auch kein Problem, aber hier faellt mir leider im Moment ueberhaupt nichts zu ein.

Wo mache ich hier den Denkfehler, oder anderes formuliert, was muss ich tun, damut meine Variable ihren Wert behaelt und nicht bei jedem Schleifendurchlauf neu initialisiert wird.

Wer auch immer sich also meiner erbarmen wird, mein Dank ist ihm jetzt schon sicher ... :D

Verfasst: 13. Januar 2008 08:57
von CaptnChaos
ehm.... wo weisst du denn deiner variable einen wert zu?

Verfasst: 13. Januar 2008 10:49
von gboelter
KernelPanic hat geschrieben:ehm.... wo weisst du denn deiner variable einen wert zu?
Die Zuweisung war schon in Ordnung, aber dennoch hast Du mich letztlich auf den richtigen Gedanken gebracht.

Ich hatte etwas versteckt un einer Member Funktion - warum auch immer - das hier stehen:

Code: Alles auswählen

    Erpel erpel;
    if (erpel.dbConnect(currentMandant))
    {
        // weiterer Code ....
    }
Das funktioniert auch einwandfrei mit dem kleinen aber unschoenen Nebeneffekt, dass mein Programm mal kurz einen Abstecher zurueck in die Erpel.cpp gemacht und dort das hier abgearbeitet hat:

Code: Alles auswählen

Erpel::Erpel(QWidget *parent) : QMainWindow( parent )
{
    setupUi(this);
    // hier folgt weiterer Code ....

    connect( actionQuit,SIGNAL (triggered()), this, SLOT(slotClose()) );
    // hier folgt weiterer Code ....
} 
Und damit war die 'liebevoll' gemachte Zuweisung an currentMandant auch gleich wieder weg .... :roll:

Und wieder was dazu gelernt .... :D