有一个widget, 里面有一个qtablewidget,用于显示从网上get到的数据,我把qtablewidget在构造函数里初始化并加载get到的数据。结果是这样,打开程序时,widget会和加载好的qtablewidget一起同时显示。但是这样在网速好的情况下也会加载很快。不过网速不好时,用QNetworkAccessManager get数据时会有一定的延迟,所以导致窗口反应一会才出现,这样我感觉体验不好。
我的想法是,先显示出widget窗口,再在qtablewidget部分显示一个loading,等get数据后再加载到qtablewidget。不过这个方法自己不会做,请教高手,谢谢。
下面是get的代码
void get(QString url, QString content){
QNetworkRequest req;
req.setUrl(QUrl(url+ content));
QNetworkReply *reply=this->net->get(req);
QEventLoop eventLoop;
QTimer::singleShot(3000, &eventLoop, SLOT(quit()));//超时退出
connect(net,SIGNAL(finished(QNetworkReply*)),&eventLoop,SLOT(quit()));
eventLoop.exec();
this->resultByte=reply->readAll();
reply->deleteLater();
}
【解决】
用QTimer::singleShot(0,this,SLOT(initional()));