2011-08-24 21 views
7

Tengo MainWindow y QNAMRedirect clases y estoy tratando de compilar el programa pero obteniendo el error del compilador.QT no hay función de coincidencia para la llamada a 'MainWindow :: connect()

Aquí es QNAMRedirect clase:

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(); 

}; 

y aquí es MainWindow clase:

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; 
}; 

y estoy tratando de conectar NAMRedirect::finished(QString) señal a QTextEdit Widget en MainWindow esta manera:

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

    urlGet.doRequest(); 

} 

pero obtengo el error del compilador:

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

¿Cómo puedo solucionar eso?

Respuesta

7

El motivo del error de compilación es que los dos objetos que pasa a la función connect() deben ser punteros. Entonces, usando & urlGet (en lugar de solo urlGet) corregirá su error de compilación. Sin embargo, tan pronto como su función devuelve este objeto pasará de alcance y ser destruidos, por lo que sugiero que cambie su función para buscar algo más parecido a esto:

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

Usted, por supuesto, la necesidad de tomar medidas que no estás perdiendo memoria aquí.

+0

muchas gracias hombre :) –

+1

Podría ser bueno cambiar sus conexiones para usar la nueva sintaxis Qt5. Ventajas es que recibe una notificación en el momento de la compilación de cualquier desajuste –

Cuestiones relacionadas