我在主窗口使用exec()来调用对话框,
在对话框里点击按钮发出一个信号,
然后在主窗口中connect 这个信号,
可是槽函数不起作用。
这个问题困扰了我半天。
后来我无意中将exec() 改为show() ,
居然可以了!!!
不知道是什么原因??
------解决方案--------------------
exec()本身是个事件循环,他会代替主事件循环处理事件
但是对话框的exec()被设置成为强制忽略一些事件(通常的模态对话框跳出来之后你就不能操作其他界面就是这个原因)
所以你的信号-槽连接事件应该被忽略了
——以上是个人猜测
------解决方案--------------------
你可以用这样的方式解决:
if (myDialog.exec() == QDialog::accepted )
{
//你的代码
}
运行时程序会一直停留在if(myDialog.exec() == QDialog::accepted ),等到你按下了ok之后才会执行花括号里的代码(如果按了cancel就不会执行)
------解决方案--------------------
exec()堵塞了主消息循环,构建了自己的消息循环