我正在尝试编写我的新应用,但每次按下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始终为空。
答案 0 :(得分:0)
您的QTextBrowser
始终为空,因为您在每个mainwindow
函数中创建了新的ready()
对象。您应该创建一次mainwindow对象,并在整个代码中使用相同的mainwindow
对象。您可以在mainwindow
构造函数中创建新的creatlist
对象。