项目分析,最近做的项目遇到了一个问题,需求是点击弹出的对话框以外的程序界面,窗口响应相应的动作
- 首先,因为要接受对话框的执行结果,弹出对话框用exec是默认设定是模态显示,也就是会阻塞父窗口UI交互,
QDialog dlg(this);
if(dlg.exec() == QDialog::Accepted)
{
qDebug() << QString::fromLocal8Bit("确认对话框");
}
else
{
qDebug() << QString::fromLocal8Bit("拒绝对话框");
}
但是要求点击对话框以外的窗口父窗口能够接受到UI消息,而不是被dlg
拦截,所以这种方式我们似乎无法实现,要么重写exec()
,其实还有一种比较简单的方法;代码如下:
QDialog dlg(this); //指定父窗口,可以让你的任务栏不显示标记,否则和QWidget效果一样
dlg.setModal(false);
dlg.Show();
if(dlg.exec() == QDialog::Accepted)
{
qDebug() << QString::fromLocal8Bit("确认对话框");
}
else
{
qDebug() << QString::fromLocal8Bit("拒绝对话框");
}