使用环境: :在qt页面开发中,常常需要处理页面中一些局部数据资源的更新。
这里我用QTimer定时器,通过QTimer的槽函数:timeoutslot(),来处理页面局部数据资源的更新逻辑,
具体代码实现过程如下::
- 在类的构造函数中定义一个定时器
//添加在类的构造函数中
QTimer *timer=new QTimer(this);
connect(timer,SIGNAL(timeout()),this,SLOT(timeoutslot()));//timeoutslot()为自定义槽
timer->start(1000); //设置定时器处理时间断点为1000毫秒
- 在timeoutslot()槽函数中处理请求
//TeleCloud是我的类,OnResourceOffline(int32_t nResId)为继承的SDK里类的虚函数
//用来处理资源下线,返回nResId为资源ID
void TeleCloud::OnResourceOffline(int32_t nResId)
{
flag_devref = 1; // 定义的下线标志位
devID_fre = nResId; // 将下线的资源ID取出来
}
//定时器的槽函数
void TeleCloud::timeoutslot()
{
//
if (1 == flag_devref)
{
map<uint32_t, QStandardItem*>::iterator iter;
iter = m_devResItemMap.find(devID_fre); //用map查找对应的资源
iter->second-
>setIcon(QIcon(QStringLiteral(":/device/Resources/device/device_offline.png")));
flag_devref = 0; //标志位置0
}
else
return;
}