16,816
社区成员




bool wasShowModal = testAttribute(Qt::WA_ShowModal);
setAttribute(Qt::WA_ShowModal, true);
setResult(0);
这是从Dialog.exec()函数内部复制的代码。所以你的方法适合。[/quote]
对了,不要使用exec(),使用show()。[/quote]
问题已解决,查看9楼。
解决 exec非模态问题,当自定义show函数时,可以使用以下代码:
QEventLoop loop;
this->show();
connect(this,SIGNAL(accepted()),&loop,SLOT(quit()));
loop.exec(QEventLoop::DialogExec); //进入事件 循环处理,阻塞
int res = this->result();
return res;
此段代码可以保证dialog进行阻塞,并且有返回值。返回值乃是当前中断事件循环的事件。
res的值是:Accepted或者rejceted。 bool wasShowModal = testAttribute(Qt::WA_ShowModal);
setAttribute(Qt::WA_ShowModal, true);
setResult(0);
这是从Dialog.exec()函数内部复制的代码。所以你的方法适合。[/quote]
对了,不要使用exec(),使用show()。 bool wasShowModal = testAttribute(Qt::WA_ShowModal);
setAttribute(Qt::WA_ShowModal, true);
setResult(0);
这是从Dialog.exec()函数内部复制的代码。所以你的方法适合。