【问题标题】:inline functions and QObject::connect - expected expression内联函数和 QObject::connect - 预期表达式
【发布时间】:2021-08-03 14:03:44
【问题描述】:

我来自 Objective-C,并且喜欢在 c++11 中使用 c++ 的内联函数,它们很有用!可悲的是,我的插槽在这里遇到了问题(这个设置让我想起了协议和委托,我想知道我是否可以创建一个专门的类来表现得像 obj-c 中的“委托”)。

#include <QCoreApplication>
#include <QtNetwork/QTcpSocket>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QTcpSocket *socket = new QTcpSocket;
    socket->connectToHost("qt.nokia.com", 80);
    QObject::connect(socket, &QTcpSocket::connected, [socket, page] () {
        socket->write(QByteArray("GET " + "index.html" + "\r\n"));
    });
    QObject::connect(socket, &QTcpSocket::readyRead, [socket] () {
        qDebug()<< "GOT DATA "<< socket->readAll();
    });

    return a.exec();

}

这给了我以下错误:

main.cpp:10: error: expected expression
QObject::connect(socket, &QTcpSocket::connected, [socket, page] () {
                             ^

【问题讨论】:

  • 您的编译器中是否启用了 C++11?例如,lambdas 是否有效?

标签: c++ qt inline-code


【解决方案1】:

这必须添加到我的 .pro 文件中:

CONFIG += c++11

我猜虽然 QT 5 支持 lambda 函数的新 SIGNAL/SLOT 重载,但默认情况下它仍然不使用 c++11。奇怪,我想知道为什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 2014-08-16
    • 2021-09-12
    • 2018-06-13
    • 1970-01-01
    相关资源
    最近更新 更多