使用Qt同时运行线程

时间:2011-06-22 15:46:28

标签: c++ multithreading qt audio qthread

我有问题。我有一个有两个按钮的Qiwidget。按下一个按钮我需要使用一些播放技术播放1个文件。单击另一个按钮我想播放另一个文件。我使用两个文件的回放作为线程创建了类。但是当我尝试按下第一个按钮时,我的应用程序卡住了,我无法按下第二个按钮。它会被阻止,直到我的播放结束。

我希望能够使用我的主应用程序而不管播放的文件。我怎样才能在Qt中实现这一目标。

播放文件1.h ..

class PlaySource1 : public QThread
{
public:
    PlaySource1();
    virtual void run();
};

playbackfile.cpp

PlaySource1::PlaySource1()
{
}
void PlaySource1::run()
{
some code
}

现在在我的主文件.cpp中运行如下代码:

void Test::on_pbPlaySource1_clicked()
{
    PlaySource1 *playSource1 = new PlaySource1;
    playSource1->run();

}

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

2 个答案:

答案 0 :(得分:4)

你应该致电

playSource1->start();

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

答案 1 :(得分:0)

尝试将exec()添加到run()函数的末尾,并查看moveToThread()的sbj Qt moveToThread() vs calling new thread when do we use each。可能它会帮助你。