Seite 1 von 1

speicherzugriffsfehler

Verfasst: 5. März 2007 18:35
von Linuxguru
hallo,

ich möchte mit einem button den textinhalt aus dem lineedit in einem label anzeigen.
bekomme dabei aber ein speicherabbildfehler.

mein code
test.h

Code: Alles auswählen

#ifndef QTTUTWIDGET_H
#define QTTUTWIDGET_H

#include <qwidget.h>
#include <qlabel.h>
#include <qlineedit.h>

class TestWidget : public QWidget
{
    Q_OBJECT
public:
    TestWidget(QWidget* parent=0, const char* name=0);

private slots:
    void changeLabel();

protected:
    QLabel* label;
    QLineEdit* lineEdit;
};

#endif
test.cpp

Code: Alles auswählen

    ....................
    QLineEdit *lineEdit = new QLineEdit(this);
    lineEdit->setGeometry(10, 80, 180, 20);

    QPushButton *button = new QPushButton("Hier klicken", this);
    button->setGeometry(10, 110, 180, 20);

    QObject::connect(button, SIGNAL(clicked()), this, SLOT(changeLabel()));
}

void TestWidget::changeLabel()
{
        label->setText(lineEdit->text());
}

wo könnte das problem liegen?

danke

Verfasst: 5. März 2007 19:51
von Christian81
Und wo wird label initialisiert?

Verfasst: 5. März 2007 20:30
von Linuxguru
ich dachte, ich tu nur mal das wichtige rein.. das label wird weiter oben initialisiert.

hier nochmal die gesamte cpp

Code: Alles auswählen

#include <qpushbutton.h>
#include <qlineedit.h>
#include <qlayout.h>
#include <qpopupmenu.h>
#include <qmenubar.h>
#include <qslider.h>
#include <qlcdnumber.h>

#include "test.h"

TestWidget::TestWidget(QWidget* parent, const char* name)
  : QWidget(parent, name)
{
    QPopupMenu *fileMenu = new QPopupMenu(this);
    fileMenu->insertItem( "Neu" );
    fileMenu->insertItem( "Oeffnen");
    fileMenu->insertSeparator();
    fileMenu->insertItem( "&Beenden", this, SLOT(close()));

    QMenuBar *mainMenu = new QMenuBar(this);
    mainMenu->insertItem( "&Datei",fileMenu );

    label = new QLabel(this);
    label->setText("alter text");
    label->setGeometry(10, 40, 180, 30);
    label->setAlignment(Qt::AlignCenter);
    label->setFont(QFont("Arial", 20, QFont::Bold));

    QLineEdit *lineEdit = new QLineEdit(this);
    lineEdit->setGeometry(10, 80, 180, 20);

    QPushButton *button = new QPushButton("Hier klicken", this);
    button->setGeometry(10, 110, 180, 20);

    QLCDNumber *lcd = new QLCDNumber(2, this);
    lcd->setSegmentStyle(QLCDNumber::Filled);
    lcd->setGeometry(50, 170, 100, 40);
    lcd->display(1);

    QSlider *slider = new QSlider(1, 99, 2, 1, QSlider::Horizontal, this);
    slider->setGeometry(10, 140, 180, 20);

    QObject::connect(lineEdit, SIGNAL(returnPressed()), this, SLOT(changeLabel()));
    QObject::connect(button, SIGNAL(clicked()), this, SLOT(changeLabel()));
    QObject::connect(slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)));
}

void TestWidget::changeLabel()
{
        label->setText(lineEdit->text());
} 

Verfasst: 5. März 2007 20:52
von Christian81
Ok, dann die nächste Frage - wo wird lineedit initialisiert? Und schau bitte genau nach!

Verfasst: 5. März 2007 20:55
von Linuxguru
ohh alles klar.. ich hab die erst als normales object integriert... da muss ich natürlich noch was ändern..


dank dir christian! :-)