QT нет функции соответствия для вызова ' MainWindow:: connect()
Я MainWindow
и QNAMRedirect
классов и я пытаюсь скомпилировать программу, но получаю ошибку компилятора.
здесь 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
класс:
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 ответов
причина ошибки компиляции заключается в том, что два объекта, которые вы передаете функции connect (), должны быть указателями. Таким образом, использование &urlGet (вместо просто urlGet) исправит вашу ошибку компиляции. Однако, как только ваша функция вернется, этот объект выйдет из области видимости и будет уничтожен, поэтому я предлагаю вам изменить свою функцию, чтобы выглядеть примерно так:
QNAMRedirect *urlGet = new QNAMRedirect( this )
QObject::connect(urlGet,SIGNAL(finished(QString)),ui->textEdit,SLOT(setText(QString)));
urlGet->doRequest();
вам, конечно, нужно будет принять меры, чтобы вы не утечка памяти здесь.