gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 11:43:23 25 4
gpt4 key购买 nike

我有 MainWindowQNAMRedirect类,我正在尝试编译程序但出现编译器错误。

这是QNAMRedirect类(class):

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*)'

我该如何解决?

最佳答案

编译错误的原因是你传递给connect()函数的两个对象需要是指针。因此,使用 &urlGet(而不仅仅是 urlGet)将修复您的编译错误。但是,一旦您的函数返回该对象就会超出范围并被销毁,因此我建议您将函数更改为更像这样:

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

当然,您需要采取措施确保您没有在这里泄漏内存。

关于QT 没有用于调用'MainWindow::connect() 的匹配函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7180162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com