2011-08-26 75 views
1

這裏是我使用「連接」的代碼,我用它來到插槽「slotReadyRead」,在那裏我可以讀取回復的內容。 但是我有一個消息而調試或運行程序,其是---->如何解決(不兼容的發送者/接收者參數)問題?

的QObject ::連接:不相容發送/接收器參數 QNetworkReplyImpl :: readyRead() - >的MainWindow :: slotReadyRead(QNetworkReply * )

的.cpp

void MainWindow::on_pushButton_clicked() 
{ 
    QNetworkAccessManager* manager = new QNetworkAccessManager(this); 
    QNetworkRequest request; 
    request.setUrl(QUrl("http://lascivio.co/mobile/get.php?name=marwa")); 
    QNetworkReply *reply = manager->get(request); 
    connect(reply, SIGNAL(readyRead()), this, SLOT(slotReadyRead(QNetworkReply*))); 
} 
void MainWindow::slotReadyRead(QNetworkReply* reply) 
{ 
    QByteArray b (reply->readAll()); 
    QString s(b); 
    ui->lineEdit->setText(s); 
} 

.H

public slots: 
    void slotReadyRead(QNetworkReply* reply); 

回答

6

槽需要具有兼容簽名無線信號。所以,無論是把它定義爲:

void slotReadyRead(); 

,或使回覆可選:

void slotReadyRead(QNetworkReply* reply = null); 
+0

我改成了 - >「void slotReadyRead();」 +在.h文件中定義了應答變量,所以我可以通過任何函數訪問它......它終於起作用非常感謝:) – Sonnenschein

+0

我有1個聲望,需要14個額外的聲望才能投票給出好的答案:) – Sonnenschein

+0

夠公平,我不知道這個限制。 –

3

你不能強迫一個插頭插入插座,如果它不意味着是。我看到兩個選項:

  1. replyMainWindow成員(快速和骯髒的解決方案)
  2. 創建一個新類,將有一個QNetworkReply*爲成員,並處理回覆的數據插槽,當它準備好了。

順便說一句:我想你想要connect(reply, SIGNAL(finished()), this, SLOT(slotProcessReply())documentation)。 And here is the HTTP example from the Qt example collection!看看network/http/httpwindow.hnetwork/http/httpwindow.cpp

+0

謝謝。這將被視爲:) – Sonnenschein

相關問題