相关疑难解决方法(0)

连接Qt 5中的过载信号和插槽

我在Qt 5中无法掌握新的信号/槽语法(使用指向成员函数的指针),如新信号槽语法中所述.我尝试改变这个:

QObject::connect(spinBox, SIGNAL(valueChanged(int)),
                 slider, SLOT(setValue(int));
Run Code Online (Sandbox Code Playgroud)

对此:

QObject::connect(spinBox, &QSpinBox::valueChanged,
                 slider, &QSlider::setValue);
Run Code Online (Sandbox Code Playgroud)

但是当我尝试编译它时出错:

错误:没有匹配的函数用于调用 QObject::connect(QSpinBox*&, <unresolved overloaded function type>, QSlider*&, void (QAbstractSlider::*)(int))

我曾经尝试过在Linux上使用clang和gcc -std=c++11.

我做错了什么,我该如何解决?

c++ qt qt5

117
推荐指数
3
解决办法
5万
查看次数

新的QObject :: connect语法不起作用

我正在使用新语法QObject::connect将信号连接到插槽:

connect(m_pNetworkReply, &QNetworkReply::error, this, &MyClass::onError);
Run Code Online (Sandbox Code Playgroud)

但我得到了这个奇怪的错误,我不明白为什么:

/home/user/Programming/sourcefile.cpp:131: error: no matching function for call to 'MyClass::connect(QNetworkReply*&, <unresolved overloaded function type>, MyClass* const, void (MyClass::*)(QNetworkReply::NetworkError))'
          this, &MyClass::onError);
                                        ^
Run Code Online (Sandbox Code Playgroud)

奇怪的是,如果我使用旧语法,一切正常:

connect(m_pNetworkReply, SIGNAL(QNetworkReply::error(QNetworkReply::NetworkError)),
        this, SLOT(MyClass::onError(QNetworkReply::NetworkError)));
Run Code Online (Sandbox Code Playgroud)

此外,此连接工作正常:

connect(m_pNetworkReply, &QNetworkReply::finished,
        this, &MyClass::replyFinished);
Run Code Online (Sandbox Code Playgroud)

也是void onError(QNetworkReply::NetworkError);一个private slot.

我究竟做错了什么?

编辑:

请注意,这不是应该起作用的代码.我写这个课只是为了隔离问题; 代码应该编译.

myclass.h:

#ifndef MYCLASS_H
#define MYCLASS_H

#include <QWidget>
#include <QNetworkAccessManager>
#include <QNetworkReply>

class MyClass : public QWidget
{
    Q_OBJECT

public:
    explicit MyClass(QWidget *parent = 0);
    ~MyClass();

private slots:
    void replyFinished(); …
Run Code Online (Sandbox Code Playgroud)

qt moc qobject qmetaobject

0
推荐指数
1
解决办法
499
查看次数

标签 统计

qt ×2

c++ ×1

moc ×1

qmetaobject ×1

qobject ×1

qt5 ×1