【发布时间】:2020-11-23 18:02:00
【问题描述】:
我有一个QProgressDialog,我想覆盖它的cancel() 槽来改变它的行为。
我不想关闭对话框,而是想做一些其他操作,然后在 QThread 完成后关闭对话框,然后再关闭对话框。
我尝试断开 canceled/cancel 信号/插槽对并重新连接到新行为,但它似乎没有太大变化。
只要我点击取消按钮,进度对话框就会首先关闭,然后我的 lambda 会继续执行。
Qobject::disconnect(m_progressdialog, &QProgressDialog::canceled, m_progressdialog, &QProgressDialog::cancel);
Qobject::connect(m_progressdialog, &QProgressDialog::canceled, [](){
// continue displaying the dialog as an occupation bar
m_progressdialog->setValue(0);
// do some other things
// a lot of code
// ...
// only later close the dialog
m_progressdialog->close();
});
有没有办法正确地做到这一点?
【问题讨论】:
标签: c++ c++11 qt5 qprogressdialog