ich habe ein Problem in einem QT Programm, bei dem ich nicht weiter komme. Vielleicht kann mir hier jemand auf die Sprünge helfen?
Ich habe folgende Kalsse implementiert.
Code: Alles auswählen
#include <qwidget.h>
#include <qlayout.h>
#include <qlabel.h>
#include <qtextedit.h>
#include <qstring.h>
#include "centralwidget.h"
lcfCentralWidget::lcfCentralWidget( QWidget *parent, const char *name )
: QWidget( parent, name )
{
QGridLayout *mainGrid = new QGridLayout(this,2,1,5,-1);
QLabel *stressFileLabel = new QLabel("Stress Input File: ",this);
cout << stressFileLabel << endl;
stressFileLabel->setText("neuER Text");
cout << stressFileLabel << endl;
updateStressInput("HAllo");
QTextEdit *textwindow = new QTextEdit(this);
textwindow->setReadOnly(true);
textwindow->setText("LCF-life Evaluation Tool Version 0.1");
textwindow->append("(Early Development Stage)");
mainGrid->addWidget(stressFileLabel,1,0);
mainGrid->addWidget(textwindow,2,0);
}
void lcfCentralWidget::updateStressInput(const QString filename)
{
QString msg="Stress Input File: ";
msg= msg + filename;
cout << stressFileLabel << endl;
stressFileLabel->setText(filename);
cout << "test" << msg.ascii() << endl;
return;
}
//Die Klasse wird in einem
QT-Mainwindow Programm als Central Widget benutzt. Leider stürzt das Prog
zur Laufzeit mit einem Memory Fault aus.
Wenn ich den Eintrag
Code: Alles auswählen
updateStressInput("HAllo");Ich habe mir die Adresse des Zeigers stressFileLabel ausgeben lassen
und diese ist bei der Ausgabe in der updateStressInput - Methode anders als im Konstruktor.
Kann mir jemand erklären, warum die Adresse des Pointers sich ändert?0x722db0
0x722db0
0x6f667c6a00000000
Memory fault
Vielen Dank.
Gruß
Patrick
P.S.: Hier noch das zugehörige Header File
Code: Alles auswählen
#ifndef CENTRALWIDGET
#define CENTRALWIDGET
#include <qvaluelist.h>
#include <iostream.h>
#include <qwidget.h>
#include <qstring.h>
class QGridLayout;
class QTextEdit;
class QLabel;
class lcfCentralWidget : public QWidget
{
Q_OBJECT
public:
lcfCentralWidget( QWidget *parent, const char *name = 0 );
public slots:
void updateStressInput(const QString filename);
protected slots:
protected:
private:
QLabel* stressFileLabel;
QGridLayout* mainGrid;
QTextEdit* textedit;
};
#endif