Seite 1 von 1

unaviable synchronous Data?

Verfasst: 5. November 2011 19:37
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

Re: unaviable synchronous Data?

Verfasst: 5. November 2011 20:16
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

Re: unaviable synchronous Data?

Verfasst: 5. November 2011 20:49
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

Re: unaviable synchronous Data?

Verfasst: 5. November 2011 21:17
von DBGTMaster
Und an welcher Stelle genau beendet der Debugger nun das Programm?

Re: unaviable synchronous Data?

Verfasst: 5. November 2011 21:39
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.

Re: unaviable synchronous Data?

Verfasst: 5. November 2011 22:02
von DBGTMaster
Bitte ein minimal kompilierbares Beispiel... Mit allen Header & Cpp Dateien..

Re: unaviable synchronous Data?

Verfasst: 5. November 2011 22:19
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();
}

Re: unaviable synchronous Data?

Verfasst: 5. November 2011 23:53
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...

Re: unaviable synchronous Data?

Verfasst: 6. November 2011 00:14
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

Re: unaviable synchronous Data?

Verfasst: 6. November 2011 09:50
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