使用 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 同时运行线程的主要内容,如果未能解决你的问题,请参考以下文章

高分求qt写的线程程序,功能每隔一百毫秒查询数据,这个线程在整个程序运行中都一直在运行

Qt 脚本多线程

Qt在多线程中使用信号槽的示例

QT 线程从不运行

Qt - 在其他线程上运行函数

Qt-不调用CoInitialize-实现SDL多线程运行