ich habe seit kurzer Zeit angefangen mit QT programme zu programmieren. Ich bin gerade dabei ein Programm zu schreiben bei dem ich die Serielle Schnittstelle ansprechen kann. Ich habe ein MainWindow, wo sich alle Steuerelemente befinden. Aus der Klasse Serial möchte ich mit der Klasse Log Fehlermeldungen in ein ListView schreiben. Ich habe der Klasse Log da Ui der MainWindow verebt, um auf die Steuerelemente zugreifen zu können. Doch bei jedem Aufruf wird das Programm unerwartet beendet. Die Settingsklasse ist ein anderes Fenster, wo einstellungen getroffen werden können. Um das Fenster wieder zu schließen wurde die MainWindow als Pointer übergeben, aber mir erscheint diese Methode nicht sehr elegant. Deshalb probierte ich es mit Verebung.
Weiß jemand wie man dies elegant löst?
Im Anhang ist der komplette Quellcode. Hier noch ein paar codeausschnitte:
log.h:
Code: Alles auswählen
#include <QMainWindow>
#include "ui_mainwindow.h"
class Log : public QMainWindow, public Ui::MainWindow
{
Q_OBJECT
public:
explicit Log(QWidget *parent = 0);
void printError(QString error);
signals:
public slots:
private:
};
Code: Alles auswählen
bool serial::openSerialPort(){
Log *error = new Log();
error->listLog->addItem("Test"); // Hier stürzt das Programm ab
Der Prozess wurde nach Erhalt eines Signals vom Betriebssystem angehalten.
Name des Signals :
SIGSEGV
Bedeutung :
Segmentation fault