自定义对话框(源自QDialog)不会关闭(Android)

Custom dialog (derived from QDialog) would not close (Android)

本文关键字:Android 源自 QDialog 自定义 对话框      更新时间:2023-10-16

好吧,有一个自定义的QDialog(派生自QDialog的类(,从QML填充的东西,它可以正常工作,它打开得很好,它的行为符合预期,但是当我们想杀死它时使用

mDialog-> close() or mDialog->hide()

对话框中的所有动画都停止了,其中的所有动画都冻结了,但是......它不会关闭。

如果你想知道我们如何启动销毁过程,QML中有一个按钮,它向C++后端发送信号,后端保持指向对话框的指针并尝试关闭。 对话框使用 showFullScreen 打开,因此没有任何阻塞(exec 会阻止( 想法?

经过许多人工工作时间,我们偶然发现了一个修复程序。

你瞧。因此,要做到这一点,我们必须

dialog->setAttribute(Qt::WA_DeleteOnClose,true); 

在尝试关闭((之前。

现在文档中没有任何内容表明需要这样的东西?据说是一个错误,对吧?

相反,例如以下序列:

dialog->close() /// hide()/ reject()
delete dialog;

将导致异常,QT 会说一些关于它的处理队列被预先占用并且我们试图杀死它的事情。