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

我将 QtCreator 用于 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 个重载都不能转换所有参数类型。任何人都可以给我一些帮助吗?

4

2 回答 2

2

替换this0它应该可以工作。

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

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

就像对您问题的评论所说,您也不能在const方法中调用警告。

另一种选择是您可以摆脱方法的const“本质” newWizard()

希望有帮助。

于 2013-07-21T20:53:18.533 回答
1

尝试转换thisQWidget * 我同意@phyatt,您可以设置 parent = 0。意味着您的警告没有父级,它是桌面的子级。

例如:

QMessageBox::warning((QWidget *)this,tr("Error"),
                             tr("File existed"));
QMessageBox::warning(0,tr("Error"),
                             tr("File existed"));
于 2013-07-22T02:18:47.747 回答