• 14629阅读
  • 6回复

QDialog的Accept和Reject [复制链接]

上一主题 下一主题
离线superpanda
 
只看楼主 倒序阅读 楼主  发表于: 2010-11-24
各位大虾

小弟给一个QDialog加了QButtonBox,有OK和Cancel两个按钮,而且用connect把这个ButtonBox的accepted()和Dialog的accept()连起来,同时把rejected()和reject()也连了起来。
在这个myDialog.exec()以后,我如此写:

if(myDialog.Accepted)
{
blabla

}
if(myDialog.Rejected)
{
blablabla

}

但是程序永远只能判断是不是按了OK,按Cancel却总也不能进入那个if
这是为什么呢?

小弟期待各位大侠解答!
离线dbzhang800

只看该作者 1楼 发表于: 2010-11-24
因为:
QDialog::Accepted    1
QDialog::Rejected    0
前者为真,后者为假。这是恒定不变的

题外:你的意图是要判断函数的返回值,可是,你的返回值去哪儿了?
离线superpanda
只看该作者 2楼 发表于: 2010-11-24
引用第1楼dbzhang800于2010-11-24 07:52发表的  :
因为:
QDialog::Accepted    1
QDialog::Rejected    0
前者为真,后者为假。这是恒定不变的
.......

晕恍然大悟。。。我想做的是判断是按了OK还是Cancel。。。应该怎么写呢?谢谢!
离线superpanda
只看该作者 3楼 发表于: 2010-11-24
哦,是不是判断myDialog.exec() == QDialog::Accepted ????
离线la_fisher

只看该作者 4楼 发表于: 2010-11-24
直接if(myDialog.exec())不就行了么
离线roywillow

只看该作者 5楼 发表于: 2010-11-24
用一个if else就是了,用两个if似乎一般不推荐这么用吧,因为会多判断一次
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线superpanda
只看该作者 6楼 发表于: 2010-11-24
回 4楼(la_fisher) 的帖子
恩。。是的
快速回复
限100 字节
 
上一个 下一个