使用QT Connect时,视觉工作室警告



,因此我使用的是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工具链重新配置,请清洁和 再生该项目,所有这些警告将消失。

相关内容

  • 没有找到相关文章

最新更新