Problem mit QT 3.3.1 (gelöst)
Verfasst: 8. Februar 2007 15:58
Hallo zusammen,
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.
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
auskommentiere gibt es den Memory Fault nicht mehr.
Ich habe mir die Adresse des Zeigers stressFileLabel ausgeben lassen
und diese ist bei der Ausgabe in der updateStressInput - Methode anders als im Konstruktor.
Vielen Dank.
Gruß
Patrick
P.S.: Hier noch das zugehörige Header File
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