关闭我的初始子对话框并进入我的父对话框后,我的qt桌面应用程序一直崩溃

问题描述 投票:0回答:1

所以我对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();

}

我需要更改什么,以便我的桌面应用程序在运行时不会崩溃?

c++ qt
1个回答
3
投票

你在deleteLater实例上调用global,你没有用new实例化它,它在你的main中:

global popup(&survey);

当调用delete时,您的应用程序崩溃了。

无需在你的插槽中调用deleteLater

© www.soinside.com 2019 - 2024. All rights reserved.