Qt中query.exec怎么用的if(dlg.exec() == QDialog::Accepted)如何实现dlg窗口不关闭

QDialog::Accept 是个int 型的定义代表您点击了对話框的“接受”(确定OK)按钮。

你对这个回答的评价是

}

1.如果使用exec()默认为模态的如果用show()需要设置setModel(true)才是模态的。

2.当删除一个dialog对象时exec()返回QDialog::Rejected,因此在删除dialog时要特别小心举例说明一下:

endSession2()还会继续执行,这个時候就会出现端错误了因为A比B先删除,而此时还要调用A的成员A都被删除了,还能调用其成员函数要是能调用就奇了怪了。因此在类AΦ多了个静态变量thisDeleted记得在析构A的时候把这个值改变了,这样就不会在调用emit endSession2()也就不会出现段错了。

4.close()会销毁对象嘛答案是只有当设置了 setAttribute(WA:closeOnDelelte)是才会删除,如果这个标志没有设置其作用和hide(),setvisible(false)一样只会隐藏改对象。

5.当dialog在exec()时候后台线程同样可以操作界面,如收到每个消息还可以弹出QDialog。


}

  • C++基本语法一定要扎实啊建议先看c++ primer plus这本书,有能力的可以看看英文的
  • 遇到问题要习惯于看文档和源码解决

else return 0; //如果没有被按下则不会进入主窗口,整个程序结束运行

但昰问题来了根据文档:

点击按钮之后明明只是QDialog只是隐藏,exec()为什么会返回参数呢

原来只要hide QDialog就会exec()停止阻塞并返回参数。可以参考


}

我要回帖

更多关于 Qt 线程 exec 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信