【问题标题】:Running Threads Simultanously using Qt使用 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();

}

我的代码被线程播放阻塞。但我不希望它被阻止。请帮忙。

【问题讨论】:

    标签: c++ multithreading qt audio qthread


    【解决方案1】:

    你应该打电话

    playSource1->start();
    

    不是run()。请参阅Qt Starting Threads with QThread 文档中的“启动线程”部分。

    【讨论】:

    • 成功了。但它再次产生了一些其他问题。当我单击另一个按钮进行另一个播放时,上一个播放停止。我不希望它停止,直到我明确告诉它停止。我希望它继续播放,直到我手动告诉它停止播放..
    • 我为他们做了两个单独的线程。线程 1 和线程 2。所以我希望线程 2 在线程 1 播放时播放。我如何做到这一点。
    猜你喜欢
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    • 2022-06-24
    • 2015-07-09
    相关资源
    最近更新 更多