,因此我使用的是QT 5.12.2 C 的Visual Studio 2019。我制作了一个非常基本的UI形式:
MyApp::MyApp(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
connect(ui.pushButton, &QPushButton::clicked, this, &MyApp::onConnectClicked);
}
void MyApp::onConnectClicked()
{
ui.pushButton->setText("Clicked");
}
该程序运行良好,但在此行中:
connect(ui.pushButton, &QPushButton::clicked, this, &MyApp::onConnectClicked);
Visual Studio不断给我这个警告
Severity Code Description Project File Line Suppression State
Warning C26444 Avoid unnamed objects with custom construction and destruction (es.84).
此外,此错误:
Severity Code Description Project File Line Suppression State
Error (active) E2524 the argument to a feature-test macro must be a simple identifier
at C:Dev5.12.2msvc2017_64includeQtCoreqcompilerdetection.h line 1349
我在这里做错了吗?请帮助!
更新2020-04-08:微软已修复了这一点。最新的VS2019版本不再发布QT Connect((的每一次使用的警告。
我将下面的旧答案留给那些无法出于任何原因更新的人。
既然您按照预期的方式使用QT,并且由于我们可以假设QT的作者知道他们在做什么,因此可以合理地假设警告过于狂热,可以消除而没有危险,并且不是值得付出很多努力。
我用来摆脱它的方法是将 connect()
的结果施加到void,即。
(void)connect(ui.pushButton, &QPushButton::clicked, this, &MyApp::onConnectClicked);
演员阵容没有效果,但清楚地表明,一个人打算忽略结果,这是相当不可思议的,并且使警告消失了。
不确定它是否可以提供帮助,但是正在研究类似的问题:
https://devervevelvingercommunity.visualstudio.com/content/problem/520400/visual-studio-2019-with-qt-vs2019-detects-many-war.html
这是以下一份的重复:
https://devervevelvingercommunity.visualstudio.com/content/problem/520393/vs-2019-detects-many-false-warnings-warnings-warnings-while-vs2017-w.html
使其简短,他们声称那些警告是错误的旗帜,提出了一个解决方法:
如果您将项目与VS2017工具链重新配置,请清洁和 再生该项目,所有这些警告将消失。