首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法将QFileSystemWatcher::directoryChanged连接到lambda

无法将QFileSystemWatcher::directoryChanged连接到lambda
EN

Stack Overflow用户
提问于 2017-12-27 22:56:40
回答 1查看 422关注 0票数 0

正如标题所述,我试图将QFileSystemWatcher::directoryChanged(const QString&)信号连接到lambda,但是当我用g++ (7.2.1)编译它时,我得到了以下错误(缩写为因此不会让我发布太多的代码):

代码语言:javascript
复制
g++ -c -pipe -O2 -std=gnu++1y -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I. -I. -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtGui -isystem /usr/include/qt5/QtCore -I. -isystem /usr/include/libdrm -I/usr/lib64/qt5/mkspecs/linux-g++ -o foo.o foo.cpp
foo.cpp: In function ‘int main()’:
foo.cpp:10:55: error: no matching function for call to ‘QObject::connect(QFileSystemWatcher (&)(), void (QFileSystemWatcher::*)(const QString&, QFileSystemWatcher::QPrivateSignal), main()::<lambda(const QString&)>)’
                      [] (const QString&) { return 0; });

我正在编译QT5.9。知道为什么会这样吗?AFAICT我用的灯没问题。这是我的MWE:

foo.cpp:

代码语言:javascript
复制
#include <QObject>
#include <QFileSystemWatcher>

int main()
{
    QFileSystemWatcher watcher();
    QObject::connect(watcher, &QFileSystemWatcher::directoryChanged,
                     [] (const QString&) { return 0; });
}

foo.pro:

代码语言:javascript
复制
######################################################################
# Automatically generated by qmake (3.1) Thu Dec 28 11:11:15 2017
######################################################################

TEMPLATE = app
TARGET = foo
INCLUDEPATH += .
CONFIG += c++14
DEFINES += QT_DEPRECATED_WARNINGS

# Input
SOURCES += foo.cpp
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-27 23:27:57

检查第一个参数的类型,QT5.9API声明它必须是指向QObject派生对象的指针。

连接(const QObject *发件人,PointerToMemberFunction信号,函子函子)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47999578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档