[gelöst]Anwendnung stürzt ab

Alles rund um die Programmierung mit Qt
Antworten
mutantmonkey
Beiträge: 25
Registriert: 28. Juni 2011 09:27

[gelöst]Anwendnung stürzt ab

Beitrag von mutantmonkey »

guten tag,

ich versuche mich gerad daran ein editor file zu laden und in einem textfeld anzeigen zu lassen, problem ist jedoch dass sobald auf dateiladen geklickt wird, die anwendnung abstürzt.
Die Oberfläche habe ich mit dem Designer gebastelt.

mainwindow.cpp


Code: Alles auswählen

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>

MainWindow::MainWindow( QMainWindow *parent,
    Qt::WindowFlags flags):

    QMainWindow(parent, flags),

    ui(new Ui::MainWindow)
{
    editor = new QTextEdit;


    ui->setupUi(this);
   //Menü zum Programm
    connect(ui->pushButton_2, SIGNAL(clicked()),
            this, SLOT(openFile()));
    
}
// Datei öffnen und im Editor anzeigen
void MainWindow::openFile()
{

    QString fileName;
    fileName = QFileDialog::getOpenFileName(this, tr("Datei Oeffnen"),"",
                                            "Alle Dateien (*.*)");
                if (!fileName.isEmpty())
                        {
                            QFile file(fileName);
                            if (file.open(
                                        QIODevice::ReadOnly | QIODevice::Text))
                        {
                            editor->setPlainText(file.readAll());
              }
                        }
}



MainWindow::~MainWindow()
{
    delete ui;
}
mainwindow.h

Code: Alles auswählen

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTextEdit>
#include <QFile>
#include <QFileDialog>
#include "ui_mainwindow.h"



namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QMainWindow *parent = 0,
                        Qt::WindowFlags flags = 0);


    ~MainWindow();
    QTextEdit* editor;
public slots:
    void openFile();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H
Zuletzt geändert von mutantmonkey am 7. Juli 2011 11:09, insgesamt 3-mal geändert.
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag von archer »

Dein Member editor ist nicht initialisiert!
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

1. Nutze Code-Tags im Forum.. das kann kein Mensch lesen

2. Nutze Debugger.. diese tollen, neuen Erfindungen zeigen dem armen Entwickler, WO das Programm abstürzt

3. vergib sinnvolle (Q)-Objekt Namen. "pushButton_2" ist Designer-Default und haesslich zu lesen

4. der Pointer "editor" wird nirgends initialisiert.. da der einen zufälligen Wert hat, beendet sich das Programm logischerweise.

hth!
mutantmonkey
Beiträge: 25
Registriert: 28. Juni 2011 09:27

Beitrag von mutantmonkey »

vielen dank für die hilfe,

das mit dem debugger ist echt klasse hab ich garnichtmehr dran gedacht dass ich den nutzen könnte..
hab es geschafft das mein programm nichtmehr abstrüzt jedoch wird weiterhin nichts in meinem Textfenster angezeigt,

leider verstehe ich nciht wie ich dieses problem beheben kann?
habe den veränderten Code oben neu eingefügt

könnt mir da jemand nocheinmal etwas genauer sagen wie das geht?
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

mutantmonkey hat geschrieben:vielen dank für die hilfe,

das mit dem debugger ist echt klasse hab ich garnichtmehr dran gedacht dass ich den nutzen könnte..
hab es geschafft das mein programm nichtmehr abstrüzt jedoch wird weiterhin nichts in meinem Textfenster angezeigt,

leider verstehe ich nciht wie ich dieses problem beheben kann?
habe den veränderten Code oben neu eingefügt

könnt mir da jemand nocheinmal etwas genauer sagen wie das geht?
Kommst du im Debugger an die Stelle, in der der Text gesetzt werden soll?
Und wie sieht der Inhalt der Datei aus, nachdem du diesen gelesen hast?
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag von archer »

Wie hast du denn jetzt editor initialisiert?
mutantmonkey
Beiträge: 25
Registriert: 28. Juni 2011 09:27

Beitrag von mutantmonkey »

Rückgabewert 0 zeigt der mir nun an,

@archer: das ist ja mein problem, mit dem editor hab ich noch nichts gemacht, zumindest nicht wissentlich...
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag von archer »

Du hast editor wie folgt initialisiert:

Code: Alles auswählen

editor = new QTextEdit;
Damit ist die Anzeige zwar da aber irgendwo. Thema Layout.
Du müstest eigentlich soetwas in der Art tun:

Code: Alles auswählen

editor = new QTextEdit;
QVBoxLayout* pLayout = new QVBoxLayout(this);
pLayout->addWidget(editor);
Dann wäre deine Anzeige auch in der Oberfläche.
Wenn du allerdings das QTextEdit mit dem Designer in die Oberfäche eingebaut hat, braucht du kein extra QTextedit. Dann müßte je nach Objektnamen der Code so aussehen

Code: Alles auswählen

ui->textEdit->setPlainText(file.readAll()); 
mutantmonkey
Beiträge: 25
Registriert: 28. Juni 2011 09:27

Beitrag von mutantmonkey »

vielen dank, ein wirklich blöder fehler aber daran hab ich garnichtmehr gedacht...
Antworten