所以我对qt很新,我正在尝试用子对话框打开一个桌面应用程序,当我点击一个按钮时它指向父对话框。我设法做到了,但每当我运行它并单击“go”时,它会指向我的父窗口,然后崩溃!我从this link得到了代码。第一个答案是什么让它起作用,第二个答案根本不起作用。我的MainWindow(父)对话框是调查,我的孩子对话框是全局的。 (我知道我把它们命名为奇怪。还在学习)。
我的main.cpp
#include "survey.h"
#include <QApplication>
#include "global.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget survey;
survey.show();
global popup(&survey);
popup.show();
/*
survey w;
w.show();
*/
return a.exec();
}
我的global.cpp
#include "global.h"
#include "ui_global.h"
#include "survey.h"
global::global(QWidget *parent) :
QDialog(parent),
ui(new Ui::global)
{
ui->setupUi(this);
}
global::~global()
{
delete ui;
}
void global::on_Go_clicked()
{
//survey *nWin;
auto win = new survey();
win->setAttribute(Qt::WA_DeleteOnClose);
win->show();
deleteLater();
}
我需要更改什么,以便我的桌面应用程序在运行时不会崩溃?
你在deleteLater
实例上调用global
,你没有用new
实例化它,它在你的main
中:
global popup(&survey);
当调用delete
时,您的应用程序崩溃了。
无需在你的插槽中调用deleteLater
。