2016-04-07 45 views
0

僅更新QTableView一次,因爲我嘗試處理數據的網站在有新數據時不會自動更新。我可能需要重新運行url才能獲取最新數據,因爲QTableView在我重新啓動應用程序時自動更新。有人可以建議我採取這種做法嗎?如何以某種延遲遞歸地調用我的slotReadyRead()。我是否使用定時器或使其成爲多線程或使用一段時間(1)/ for(;;)循環?我想在將來爲數據庫實現一個TCP服務器,並認爲連續的循環可能會混亂或成爲問題。從網站更新數據到QTableView(間歇性地)

LogWindow::LogWindow(QWidget *parent) : 
QMainWindow(parent) 
{ 
ui->setupUi(this); 

manager = new QNetworkAccessManager(this); 
connect(manager, SIGNAL(finished(QNetworkReply*)), 
     this, SLOT(replyFinished(QNetworkReply*))); 
QNetworkRequest request(web_url); 
reply = manager->get(request); 

connect(reply, SIGNAL(readyRead()), this, SLOT(slotReadyRead())); 
} 

void LogWindow::slotReadyRead() 
{ 
    while(reply->bytesAvailable()) 
    { 
     processWebsite1(); 
     processWebsite2(); 

     QStandardItem *firstCol = new QStandardItem(rf_ID); 
     QStandardItem *secondCol = new QStandardItem(time); 

     model->setItem(0,0,firstCol); 
     model->setItem(0,1,secondCol); 
     ui->logs->setModel(model); 
    } 

    emit datachanged(firstCol, secondCol); 
} 

回答

0

您可以使用QTimer在定義的時間間隔火的動作來下載更新數據(或最後一個版本,如果在此期間沒有更新的網站)。

如您所述,使用while(1)for (;;)循環並不是一個好主意。