关于Qt MessageBox::warning()重载

About Qt MessageBox::warning() overloading

本文关键字:重载 warning MessageBox 关于 Qt      更新时间:2023-10-16
QMessageBox::warning(this,tr("Error"),
                             tr("File existed"));

我使用QtCreator进行MSVS2012,Win7。"this"指向一个公共从QWizard类继承的类,编译器输出是

错误 C2665:"QMessageBox::警告": 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 个重载中没有一个可以转换所有参数类型。任何人都可以给我一些帮助吗?

this替换为0,它应该可以工作。

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

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

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

另一种选择是,您可以摆脱newWizard()方法的const性。

希望有帮助。

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

例如:

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