unaviable synchronous Data?

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
strige
Beiträge: 36
Registriert: 27. Dezember 2009 19:37

unaviable synchronous Data?

Beitrag von strige »

Servus zusammen,
Ich glaube ich hab ein Problem:
Ich habe ein Mainwindow:
hier MainWindow.h:

Code: Alles auswählen

...
private:
   KlasseA *classA;  //abgeleitet von QWidget
...
hier Mainwindow.cpp

Code: Alles auswählen

...
connect(pushbutton1, SIGNAL(clicked()), this, SLOT(button_slot1());)
connect(pushbutton2, SIGNAL(clicked()), this, SLOT(button_slot2()));
....

Code: Alles auswählen

void Mainwindow::button_slot1()
{
    classA = new KlasseA(this);
    setCentralWidget(classA);
}
So nun habe ich das Problem, dass beim erstenmal drücken des Pushbuttons alles korrekt funktioniert, beim zweiten mal stürzt das ganze Programm ab und im Debugger bekomm ich hinter classA -> unaviable synchronous Data? ich bin mir sicher das es sich um eine Grundverständnisproblem meinerseits handelt, würde mich deshalb sehr über eine Antwort freuen:)

Vlg
DBGTMaster
Beiträge: 190
Registriert: 19. August 2010 10:00

Re: unaviable synchronous Data?

Beitrag von DBGTMaster »

Bitte minimal kompilierbares Beispiel.

Kann hier keinen Fehler erkennen... Vorallem denke ich, dass du den eigentlichen Code- Fehler gar nicht gepostet hast...

lG
strige
Beiträge: 36
Registriert: 27. Dezember 2009 19:37

Re: unaviable synchronous Data?

Beitrag von strige »

So, sorry, Also dann schick ich dir mal den kompletten Code vom MainWindow.
Ehrlich gesagt ist mir der Code etwas peinlich, also bitte nicht zu hart sein :oops:
Der Fehler den ich oben ebschrieben hatte ist im but2_slot() also wenn ich das zweite mal in den Slot wechsle stürzt das ganze Prog ab.

Danke schonmal.

.cpp:

Code: Alles auswählen

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "draglabel.h"


#include <QLabel>
#include <QTableView>
#include <QStandardItemModel>
#include <QDebug>




MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //Toolbar Konfiguration
    ui->mainToolBar->setAllowedAreas(Qt::LeftToolBarArea);
    ui->mainToolBar->setIconSize(QSize(40,40));
    ui->mainToolBar->setMovable(false);
    a_b1 = new QAction(QIcon(":buttons/but1.ico"),"Platz", ui->mainToolBar);
    a_b2 = new QAction(QIcon(":buttons/but2.ico"),"Gruppen", ui->mainToolBar);
    a_b3 = new QAction(QIcon(":buttons/but3"),"Ergebnis", ui->mainToolBar);
    a_b1->setCheckable(true);
    a_b2->setCheckable(true);
    a_b3->setCheckable(true);
    ui->mainToolBar->addAction(a_b1);
    ui->mainToolBar->addAction(a_b2);
    ui->mainToolBar->addSeparator();
    ui->mainToolBar->addAction(a_b3);

    connect(a_b1, SIGNAL(triggered()), this, SLOT(but1_slot()));
    connect(a_b2, SIGNAL(triggered()), this, SLOT(but2_slot()));
    connect(a_b3, SIGNAL(triggered()), this, SLOT(but3_slot()));


   connect(ui->actionBeenden, SIGNAL(triggered()), this, SLOT(close()));
   group_w = new Group_W(list, this);
   group_w->hide();
   connect(group_w, SIGNAL(sendToMain(QList<Group_m*>)), this, SLOT(sendData(QList<Group_m*>)));

}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::but1_slot()
{
    //Ordnung in der Toolbar schaffen
    a_b2->setChecked(false);
    a_b3->setChecked(false);

    platz_w = new Platz_W(this);
    setCentralWidget(platz_w);

}

void MainWindow::but2_slot()
{
    //Ordnung in der Toolbar schaffen
    a_b1->setChecked(false);
    a_b3->setChecked(false);

    //group_w = new Group_W(list, this);
    setCentralWidget(group_w);

}

void MainWindow::but3_slot()
{
    //Ordnung in der Toolbar schaffen
    a_b1->setChecked(false);
    a_b2->setChecked(false);


    tview = new QTableView(this);

    setCentralWidget(tview);



}

void MainWindow::sendData(QList<Group_m*> group_list)
{
    list = group_list;
}

void MainWindow::sendData(Group_W *group)
{
    //group_w = group;
}
.h:

Code: Alles auswählen

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QToolButton>
#include "platz_w.h"
#include "draglabeldel.h"
#include "group_w.h"
#include "group_m.h"
#include <QStringList>

#include <QTableView>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

public slots:
    void but1_slot();
    void but2_slot();
    void but3_slot();

    void sendData(QList<Group_m*>);
    void sendData(Group_W*);
signals:
    void sendTheW(Group_W*);

private:
    Ui::MainWindow *ui;

    //**TOOLBUTTONS**//

    QAction *a_b1;
    QAction *a_b2;
    QAction *a_b3;

    //Widgets
    Platz_W *platz_w;
    QTableView *tview;
    Group_W *group_w;

    //GruppenListen***
    QList<Group_m*> list;



};

#endif // MAINWINDOW_H
DBGTMaster
Beiträge: 190
Registriert: 19. August 2010 10:00

Re: unaviable synchronous Data?

Beitrag von DBGTMaster »

Und an welcher Stelle genau beendet der Debugger nun das Programm?
strige
Beiträge: 36
Registriert: 27. Dezember 2009 19:37

Re: unaviable synchronous Data?

Beitrag von strige »

In dem Slot: but2_slot()
bei setCentralWidget(group_w) wenn ich nun beim Debuggen auf den Wert von group_w schaue, steht dort nur "unavaiable synchronous Data".
Also wenn ich das erste mal in den Slot gehe funktionierts einwandfrei, erst beim 2.mal stürtzts dann ab.
DBGTMaster
Beiträge: 190
Registriert: 19. August 2010 10:00

Re: unaviable synchronous Data?

Beitrag von DBGTMaster »

Bitte ein minimal kompilierbares Beispiel... Mit allen Header & Cpp Dateien..
strige
Beiträge: 36
Registriert: 27. Dezember 2009 19:37

Re: unaviable synchronous Data?

Beitrag von strige »

sorry, dachte das war das schon:)
Also ich habe jetzt mal den Code hochgeladen, weit bin ich ja nicht gekommen :))
Vlg

Edit: main.cpp vergessen.

Code: Alles auswählen

#include <QtGui/QApplication>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    a.setStyle("plastique");
    MainWindow w;
    w.show();

    return a.exec();
}
Dateianhänge
code.rar
(6.28 KiB) 370-mal heruntergeladen
DBGTMaster
Beiträge: 190
Registriert: 19. August 2010 10:00

Re: unaviable synchronous Data?

Beitrag von DBGTMaster »

Ändere doch mal folgendes um:

Code: Alles auswählen

Group_W::~Group_W()
{
    delete ui;
    qDebug() << "bye";
}
Dann wirst du sehen, dass dein Widget zerstört wird und beim nächstes Aufruf dieses Widget eben nicht mehr existiert...

Wenn das centralWidget geändert wird, scheint das alte gelöscht zu werden...

Du könntest als centralWidget ein Widget verwenden, welches die Aufgabe hat, deine Widgets anzuzeigen...
strige
Beiträge: 36
Registriert: 27. Dezember 2009 19:37

Re: unaviable synchronous Data?

Beitrag von strige »

Hi,
Also das enttäuscht mich ja schon fast selbst, dass ich den Fehler selbst nicht gefunden habe! :roll:
Aber ehrlich, ich Danke Dir wirklich sehr, dass du Dir soviel Zeit genommen hast, mir mit diesem Problem zu helfen.
Vielen Dank
Vlg
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: unaviable synchronous Data?

Beitrag von Christian81 »

DBGTMaster hat geschrieben: Wenn das centralWidget geändert wird, scheint das alte gelöscht zu werden...
Steht sogar in der Doku: http://doc.qt.nokia.com/latest/qmainwin ... tralWidget
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten