永发信息网

QT Time 的延迟应用求教

答案:2  悬赏:0  手机版
解决时间 2021-03-04 22:52
QT Time 的延迟应用求教
最佳答案
QTime time;
time.start();
while(time.elapsed()>=spinBoxGap->value()*1000);
// 从此段代码可以看出,你是想设定一个时间间隔,执行一次循环time.elapsed(),但是你此处的time未设置间隔。具体设置好像直接start(1000)就可以了,1000单位是毫秒。,即每分钟循环执行1次。
// 给你推荐个方法采用QTimer(定时器)

timer = new QTimer();
// 设置定时器执行间隔
timer->setInterval(spinBoxGap->currentText().toInt() * 1000);
// 然后连接槽函数,执行相关操作即可
connect(timer, SIGNAL(timeout()), this, SLLOT(whatyoudo()));追问我后面有七八个处理语句和延迟,用做每个处理都等待一段时间,用qtimer的timeout()不好处理,用qtime有什么办法吗?追答// 你可以在线程中处理啊,完成一个后直接加个延迟就好了啊,非要用QTime吗? 
void MyThread::run()
{
    fun_1();
    sleep(1000); // 这里sleep中的毫秒可以用你的spinBox中的值传递过来,线程不能直接应用QSpinBox哦,通过主线程转换
    fun_2();
    sleep(2000);
    ...
}追问谢谢,不过我对线程不了解……,要是用QTime有办法吗?这也算是一种方法吧。我不想把每段处理都写成函数,追答// 哦,这样的话办法是有,不过可能导致主线程卡住
QTime time;
time.start();
while (1)
{    
    // 此处判断设置间隔时间,如果大于等于SpinBox中设置的值,那么执行
    if (time.elapsed()>=spinBoxGap->value()*1000)
    {
        ...; // 这里你只能做判断,到底执行那个步骤
    }
    // 一个步骤执行完成后重新启动time,让他重新开始计算
    time.restart();
    // 判断上面步骤是否执行完?如果完成结束循环
    if (!isRun)
    {
        break;
    }   
}追问如果你的if()可以判断执行,那我的while()也应该是可以的吧?追答你的while你仔细看就知道执行不了。此时的time.elapsed()应该等于0,你却判断要大大于spinbox设定的值才执行,你觉得合适吗?如果你按照小于的话怎么样结束呢?感觉此处还是用if比较好。追问嗯,是的,我逻辑写错了,昨天试了可以延迟,但不能操作其他的,而且出现:我后面的几个延迟好像全部无效,第一个延迟是所有延迟总和,最后所有动作一块执行,不知道怎么回事。追答具体操作不知道你是怎么弄的,不介意的话加我QQ我帮你看看:2893891799
全部回答
你这while语句什么都不做 就是延时你也看不出来呀 为什么不用QTimer
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
姓名测试打分,李佳粱他是火命,用这个名字怎
苹果摇动壁纸软件在哪下载
冀g88428大货车是哪里的
奔驰s级 2006款 s 350排量是多少
红烧肉如何上色?谁能帮帮我?
这是什么树剖开有红色液体出来
男性,55岁,有长期饮酒史,近期患者出现严重
长春火车站的 问询电话是多少 急用
关于用动能定理解平抛运动的问题
日本天皇投降诏书里的假名为什么是片假名,而
讫组词有哪些词语
讯景8600GT
三国后面是哪个朝代,三国后面是谁一统天下
是否所有的人都可以从事商务谈判工作
为什么蜜诺娃(小芙蝶)在萌学园6中没有出现
推荐资讯
家具厂的排钻工咋样?成手需要多长时间?工资
你好我想问一下比智高这个产品多少钱一盒,在
有个公司叫我去面试,但是地点在一家茶楼,而
【一个人生活的经典句子】求:要表达一个人生
深圳非法持有或者贩卖止咳水被抓刑事拘留。家
在黄海战役中牺牲的民族英雄是_;邓世昌公车
看一个人的命运,出生于1997年农历3月初4日
梦想世界体力怎么赚钱
砗磲五行属性
中国外交官王毅会几国语言
保单贷款不还会有什么结果
小贺浑江鱼水产批发地址在哪,我要去那里办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?