• 7505阅读
  • 9回复

[已解决]有关QMessagebox的一个问题 [复制链接]

上一主题 下一主题
离线butcherty
 

只看楼主 倒序阅读 楼主  发表于: 2010-04-26
我在使用QMessageBox的时候出现的选择上的问题,创建了3个按键,在最后选择的时候用  if(clickedButton == ?)的时候,三个按键会被全部顺序执行,不知道是什么问题,来大侠指点,急盼回复!!



  QMessageBox customMsgBox;
  customMsgBox.setWindowTitle("Custom message box");
  QPushButton *lockButton = customMsgBox.addButton(tr("lock"),QMessageBox::ActionRole);
  QPushButton *unlockButton = customMsgBox.addButton(tr("Unlock"),QMessageBox::ActionRole);
  QPushButton *cancelButton = customMsgBox.addButton(QMessageBox::Cancel);
  
  customMsgBox.setIconPixmap(QPixmap("./456.jpg"));
  customMsgBox.setText(tr("MAKE SURE THAT THE CARD IS THE ONE YOU WANT TO CHECK!"));
  customMsgBox.exec();

  if(customMsgBox.clickedButton() == lockButton);
    label -> setText("Custom MessageBox /Lock");
  
  if(customMsgBox.clickedButton() == unlockButton)
    label -> setText("Custom MessageBox /Unlock");

  if (customMsgBox.clickedButton() == cancelButton);
    label -> setText("Custom MessageBox /Cancel");

每次执行完了以后都是只显示Cancel,Cout输出发现三个if都被执行了
[ 此帖被午小夜在2010-04-27 21:24重新编辑 ]
离线butcherty

只看该作者 1楼 发表于: 2010-04-26
引用第1楼午小夜于2010-04-26 09:43发表的  :
void QMessageBox::addButton ( QAbstractButton * button, ButtonRole role )
这个函数不是你那样用的....看函数的返回值也该明白阿...


这个是我在书上摘的源程序,不是很清楚是什么意思,是哪里的问题阿?
离线hgamesale
只看该作者 2楼 发表于: 2010-04-26
QMessageBox的clickedButton()返回的是QAbstractButton,你现在调用clickedButton()返回的QAbstractButton和你生成的QPushButton(本是QAbstractButton的子类)类型比较,
这样的结果就是,每一个QPushButton都是QAbstractButton所以你的三个if都执行了
离线benbenmajia

只看该作者 3楼 发表于: 2010-04-27
不错,各种长见识
安然.....
离线butcherty

只看该作者 4楼 发表于: 2010-04-27
引用第3楼hgamesale于2010-04-26 18:42发表的  :
QMessageBox的clickedButton()返回的是QAbstractButton,你现在调用clickedButton()返回的QAbstractButton和你生成的QPushButton(本是QAbstractButton的子类)类型比较,
这样的结果就是,每一个QPushButton都是QAbstractButton所以你的三个if都执行了



我把QPushbutto替换成QAbstracButton好像还是都执行了,不过现在用StandardButton解决了,迷惑啊
离线抠涕
只看该作者 5楼 发表于: 2010-04-27
我晕, LZ你  if () 后面有个分号!
离线抠涕
只看该作者 6楼 发表于: 2010-04-27
其他用法没问题。

还有 , 同一个逻辑, 最好用  if ... else if ... else ...  
不要一个if 接一个 if
离线午小夜

只看该作者 7楼 发表于: 2010-04-27
引用第6楼抠涕于2010-04-27 12:37发表的  :
我晕, LZ你  if () 后面有个分号!


你真仔细。。。我只能说,我眼睛不行了。。。
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线butcherty

只看该作者 8楼 发表于: 2010-04-28
晕死,谢谢各位帮忙,犯了个超低级错误
离线抠涕
只看该作者 9楼 发表于: 2010-04-28
引用第7楼午小夜于2010-04-27 21:22发表的  :
你真仔细。。。我只能说,我眼睛不行了。。。



我是copy了LZ的代码小改来编译的。
开始我也没发现。。
我是习惯性的在把的两个 if  改成 else if 的时候才报错的。。。呵呵
快速回复
限100 字节
 
上一个 下一个