连接后QT程序崩溃()

时间:2015-03-14 12:13:19

标签: c++ qt pointers singleton signals-slots

我正在尝试编写我的新应用,但每次按下QDialog上的按钮时都会崩溃。

这是我的代码:

mainwindow.h

#include <QMainWindow>
#include "creatlist.h"

namespace Ui {
class MainWindow;

}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

public slots:
    void tableFull(){
      ...some code here...
     }

private:
    Ui::MainWindow *ui;
};

creatlist.h:

#include <QDialog>
#include "mainwindow.h"

namespace Ui {
class creatlist;
}

class MainWindow;

class creatlist : public QDialog
{
    Q_OBJECT

public:
    explicit creatlist(QWidget *parent = 0);
    ~creatlist();
    MainWindow* mainwindow;
signals:
    void updateList();

public slots:
    void ready(){
       ///////////////////////////////////////////////////////////crash
     connect(this,SIGNAL(updateList()),mainwindow,SLOT(tableFull()));
     emit updateList();

   }

private:
    Ui::creatlist *ui;
};

如果我尝试发送一些信号,我的应用程序会因分段错误而崩溃。

我做了:

void creatlist::ready()
{
mainwindow = new MainWindow(this);
emit mainwindow->linktableFull();
}

但如果我尝试在linktableFull()中执行QTextBroser.append("hue hue");,则QTextBrowser始终为空。

1 个答案:

答案 0 :(得分:0)

您的QTextBrowser始终为空,因为您在每个mainwindow函数中创建了新的ready()对象。您应该创建一次mainwindow对象,并在整个代码中使用相同的mainwindow对象。您可以在mainwindow构造函数中创建新的creatlist对象。