在setResult方法之后调用done方法来关闭对话框并设置返回值,获取的exec返回值不正确。
时间: 2024-02-17 20:01:40 浏览: 75
android 获取上一个activity返回值的方法
如果在调用setResult方法之后,直接调用done方法来关闭对话框并设置返回值,那么获取的exec返回值确实会不正确。这是因为done方法会在关闭对话框之前将返回值设置好,但是在关闭对话框之后,exec方法返回的是关闭对话框时的返回值,而不是setResult方法设置的返回值。
要解决这个问题,可以在调用done方法之前先调用accept或reject方法来关闭对话框,然后再调用done方法来设置返回值。这样就可以正确获取到返回值了。
具体代码可以参考下面的示例:
```
QDialog dialog;
dialog.setResult(100);
dialog.accept(); // 或者 dialog.reject();
dialog.done(QDialog::Accepted);
int result = dialog.result(); // 此时获取到的返回值为100
```
需要注意的是,如果在调用accept或reject方法之前,有其他操作需要执行,比如保存数据或者验证输入等,那么应该在这些操作完成后再调用accept或reject方法来关闭对话框。
阅读全文