我有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
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*)'
我该如何解决?
答案 0 :(得分:8)
编译错误的原因是传递给connect()函数的两个对象需要是指针。所以使用&amp; urlGet(而不仅仅是urlGet)将修复你的编译错误。但是,只要你的函数返回这个对象就会超出范围并被销毁,所以我建议你改变你的函数来看看更像这样的东西:
QNAMRedirect *urlGet = new QNAMRedirect( this )
QObject::connect(urlGet,SIGNAL(finished(QString)),ui->textEdit,SLOT(setText(QString)));
urlGet->doRequest();
当然,你需要采取措施,不要在这里泄漏记忆。