使用 Qt 同时运行线程
Posted
技术标签:
【中文标题】使用 Qt 同时运行线程【英文标题】:Running Threads Simultanously using Qt 【发布时间】:2011-06-22 15:46:28 【问题描述】:我有问题。我有一个有 2 个按钮的 Qiwidget。按一个按钮时,我需要使用某种播放技术播放 1 个文件。单击另一个按钮时,我想播放另一个文件。我使用 2 个文件的播放作为线程来制作类。但是当我尝试按下第一个按钮时,我的应用程序卡住了,我无法按下第二个按钮。在我的播放结束之前它会被阻止。
无论播放什么文件,我都希望能够使用我的主应用程序。我怎样才能在 Qt 中实现这一点。
播放文件 1.h..
class PlaySource1 : public QThread
public:
PlaySource1();
virtual void run();
;
播放文件.cpp
PlaySource1::PlaySource1()
void PlaySource1::run()
some code
当我运行以下代码时,现在在我的主文件 .cpp 中:
void Test::on_pbPlaySource1_clicked()
PlaySource1 *playSource1 = new PlaySource1;
playSource1->run();
我的代码被线程播放阻塞。但我不希望它被阻止。请帮忙。
【问题讨论】:
【参考方案1】:你应该打电话
playSource1->start();
不是run()
。请参阅Qt Starting Threads with QThread 文档中的“启动线程”部分。
【讨论】:
成功了。但它再次产生了一些其他问题。当我单击另一个按钮进行另一个播放时,上一个播放停止。我不希望它停止,直到我明确告诉它停止。我希望它继续播放,直到我手动告诉它停止播放.. 我为他们做了两个单独的线程。线程 1 和线程 2。所以我希望线程 2 在线程 1 播放时播放。我如何做到这一点。以上是关于使用 Qt 同时运行线程的主要内容,如果未能解决你的问题,请参考以下文章