QT没有用于调用'MainWindow :: connect()的匹配函数

时间:2011-08-24 18:06:41

标签: qt function

我有MainWindowQNAMRedirect个类,我正在尝试编译程序但是编译错误。

这是QNAMRedirect类:

class QNAMRedirect :  public QObject
{
    Q_OBJECT
public:
    explicit QNAMRedirect(QObject *parent = 0);
    ~QNAMRedirect();

signals:

public slots:
    void doRequest();
    void replyFinished(QNetworkReply* reply);
signals:
    void finished(QString);

private:
        QPointer<QNetworkAccessManager> _qnam;
        QUrl _originalUrl;
        QUrl _urlRedirectedTo;
        QNetworkAccessManager* createQNAM();

};

这里是MainWindow class:

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private slots:
    void on_request_clicked();

private:
    Ui::MainWindow *ui;
};

我试图以NAMRedirect::finished(QString)方式将QTextEdit信号连接到MainWindow小部件:

    void MainWindow::on_request_clicked()
{
    QNAMRedirect urlGet(this);
    QObject::connect(urlGet,SIGNAL(finished(QString)),ui->textEdit,SLOT(setText(QString)));

    urlGet.doRequest();

}

但我收到了编译错误:

error: no matching function for call to 'MainWindow::connect(QNAMRedirect&, const char*, QTextEdit*&, const char*)'

我该如何解决?

1 个答案:

答案 0 :(得分:8)

编译错误的原因是传递给connect()函数的两个对象需要是指针。所以使用&amp; urlGet(而不仅仅是urlGet)将修复你的编译错误。但是,只要你的函数返回这个对象就会超出范围并被销毁,所以我建议你改变你的函数来看看更像这样的东西:

QNAMRedirect *urlGet = new QNAMRedirect( this )
QObject::connect(urlGet,SIGNAL(finished(QString)),ui->textEdit,SLOT(setText(QString)));
urlGet->doRequest();

当然,你需要采取措施,不要在这里泄漏记忆。