干货 | Qt中实现边加载数据边显示页面
文章作者:稀土掘金“中国好公民st”
文章链接:
https://juejin.cn/post/7029852623268216845
第一步:定义显示定时器
//.h
QTimer *m_Timer;
//.cpp使用
m_Timer = new QTimer(this);
connect(m_Timer, &QTimer::timeout, this, &QMyWidget::OnTimerLoadData);
void QMyWidget::show()
{
QWidget::show();
m_timer->start(0);
}
void QMyWidget::show()
{
QWidget::show();
//页面启动后,直接显示加载gif图片
gPageManager::instance()->GetDownloadDlg()->SetShowMode(1);
gPageManager::instance()->GetDownloadDlg()->SetTips("正在加载案例数据,请稍后...");
gPageManager::instance()->GetDownloadDlg()->show();
if (m_timer->isActive() == false)
{
m_timer->start(0);
}
}
void QMyWidget::OnTimerLoadData()
{
//因为只是在打开页面时加载数据,所以,定时器只需要进行一次即可。
m_Timer->stop();
//启动线程,加载数据,具体代码这里不具体说明。
//数据加载完之后,隐藏GIF动态加载页面
gPageManager::instance()->GetDownloadDlg()->hide();
}
第二步:线程加载数据
#include <QtConcurrent/QtConcurrentRun>
QFuture futureResult = QtConcurrent::run(this, &QMyWidget::LoadWidgetData);
while (!futureResult.isFinished())
{
QApplication::processEvents(QEventLoop::AllEvents);
}
bool QMyWidget::LoadWidgetData()
{
//具体的数据加载操作
return true;
}
第三步:实时呈现加载进度
bool QMyWidget::LoadWidgetData()
{
//1:加载数据内容1,具体实现不说明
//发送数据内容1对应的页面处理操作
emit Msg_SendSelfDataProcessing1();
//...数据加载内容自由发挥,类似于 上面两步骤内容
return true;
}
深圳市优飞迪科技有限公司成立于2010年,是一家专注于产品开发平台解决方案与物联网技术开发的国家级高新技术企业。
十多年来,优飞迪科技在数字孪生、工业软件尤其仿真技术、物联网技术开发等领域积累了丰富的经验,并在这些领域拥有数十项独立自主的知识产权。同时,优飞迪科技也与国际和国内的主要头部工业软件厂商建立了战略合作关系,能够为客户提供完整的产品开发平台解决方案。
优飞迪科技技术团队实力雄厚,主要成员均来自于国内外顶尖学府、并在相关领域有丰富的工作经验,能为客户提供“全心U+端到端服务”。
点赞 评论 收藏