关于Qt MessageBox :: warning()重载

时间:2013-07-21 14:41:20

标签: c++ qt visual-c++ overloading

QMessageBox::warning(this,tr("Error"),
                             tr("File existed"));

我使用QtCreator for MSVS2012,Win7。 “this”指向一个公共继承自QWizard类的类,编译器输出为

  

错误C2665:“QMessageBox :: warning”:4个重载中没有一个可以转换所有参数类型           d:\ qt \ qt5.1.0 \ 5.1.0 \ msvc2012_64 \ include \ qtwidgets \ qmessagebox.h(197):可能是“QMessageBox :: StandardButton QMessageBox :: warning(QWidget *,const QString&,const QString& ,QMessageBox提示:: StandardButtons,QMessageBox提示:: StandardButton)”           尝试匹配参数列表“(const newWizard * const,QString,QString)”时

这意味着4个重载都不能转换所有参数类型。 任何人都可以给我一些帮助吗?

2 个答案:

答案 0 :(得分:1)

this替换为0,它应该有效。

基本上,对话框不需要父对象。它可以独立存在而且没有问题。

https://qt-project.org/doc/qt-4.8/objecttrees.html

就像你问题的评论所说,你也不能用const方法拨打警告。

另一种选择是你可以摆脱const方法的newWizard()'。

希望有所帮助。

答案 1 :(得分:1)

尝试将this投射到QWidget * 我同意@phyatt,你可以设置parent = 0.意味着你的警告没有父母,也不是桌面的孩子。

E.g:

QMessageBox::warning((QWidget *)this,tr("Error"),
                             tr("File existed"));
QMessageBox::warning(0,tr("Error"),
                             tr("File existed"));