QT 槽函数使用记录 —— 进度条弹窗事件

网友投稿 344 2022-08-31

QT 槽函数使用记录 —— 进度条弹窗事件

起初我是这样想的:在测试按钮的槽函数中先让进度条窗口show出来,然后调用进度条更新函数。简单的说就是这样:

void

但是这样的结果是窗体弹出后,进度条不显示,同时进度条更新的函数不断发挥作用,从qt creator的log中可以看出value值不断地更新,一直到100%进度条才显示出来。 如下图所示:

然后,我设想将

​​progresswin->progressUpdate();​​变成另一个信号发送,触发progressUpdate的槽函数,或者,测试按钮的click信号对应两个槽函数show(), progressUpdate()。他们的效果是一样的。

虽然一个信号可以对应多个槽函数,但是执行的次序与效果却没有保障。在读了更多关于信号和槽的工作机制后让我意识到,最好是一个信号对应一个槽函数,一个槽函数仅完成一项功能。

于是,我将方案换成这样:

void slotFunc(){progressWin->show();timer->setSingleShot(true);timer->start(10);// testStart() calls progressUpdate()connect(timer,SIGNAL(timeout()),progressWin,SLOT(testClass->testStart());}

在我解决这个问题后不久,我的同事提出了他的方案: 让testClass继承QThread,将testStart写入

​​virtual void run();​​中,在测试按钮的click函数中调用testClass的

​​start()​​ ,它继承于

​​[slot] void QThread::start(Priority priority = InheritPriority)​​。由此唤醒run函数线程,这算是另一种形式的触发。达到了同样的效果。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:QT SAX读取XML
下一篇:直销营销的突出特点是什么?(直销店的特点是什么)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~