【问题标题】:updating data to QTableView from website (intermittently)从网站更新数据到 QTableView(间歇性地)
【发布时间】:2016-07-28 15:00:18
【问题描述】:

仅更新一次 QTableView,因为我尝试处理数据的网站在有新数据时不会自动更新。我可能需要重新运行 url 以获取最新数据,因为当我重新启动应用程序时 QTableView 会自动更新。有人可以建议我这样做吗?我如何在延迟的情况下递归调用我的 slotReadyRead()。我是否使用计时器或使其成为多线程或使用 while(1)/for(;;) 循环?我想在未来为数据库实现一个 TCP 服务器,并认为连续循环可能会很混乱或有问题。

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

【问题讨论】:

    标签: c++ qt c++11 qt4 c++14


    【解决方案1】:

    您可以使用 QTimer 以定义的时间间隔触发操作以下载更新的数据(如果网站在此期间未更新,则为最新版本)。

    正如您所说,使用while(1)for (;;) 循环不是一个好主意。

    【讨论】:

      猜你喜欢
      • 2017-11-22
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多