我有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();
};
Run Code Online (Sandbox Code Playgroud)
这是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;
};
Run Code Online (Sandbox Code Playgroud)
我试图以这种方式将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();
}
Run Code Online (Sandbox Code Playgroud)
但我收到编译器错误:
error: no matching function for call to 'MainWindow::connect(QNAMRedirect&, const char*, QTextEdit*&, const char*)'
Run Code Online (Sandbox Code Playgroud)
我怎么能解决这个问题?
编译错误的原因是传递给connect()函数的两个对象需要是指针.所以使用&urlGet(而不仅仅是urlGet)将修复你的编译错误.但是,只要您的函数返回此对象将超出范围并被销毁,所以我建议您更改您的函数以查找更像这样的内容:
QNAMRedirect *urlGet = new QNAMRedirect( this )
QObject::connect(urlGet,SIGNAL(finished(QString)),ui->textEdit,SLOT(setText(QString)));
urlGet->doRequest();
Run Code Online (Sandbox Code Playgroud)
当然,你需要采取措施,不要在这里泄漏记忆.