2011-06-22 83 views
2

我遇到了問題。我有一個有2個按鈕的Qiwidget。按下一個按鈕時,我需要使用某種播放技術播放1個文件。在點擊另一個按鈕時,我想播放另一個文件。我使用播放的2個文件作爲線程。但是,當我嘗試推第一個按鈕我的應用程序卡住了,我無法按下第二個按鈕。它會被阻止直到我的播放結束。同時使用Qt運行線程

我希望能夠使用我的主應用程序,而不考慮播放的文件。我如何在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(); 

} 

我代碼被線程回放阻塞。但我不希望它被阻止。請幫忙。

回答

4

你應該叫

playSource1->start(); 

run()。請參閱Qt Starting Threads with QThread文檔中的「啓動主題」部分。

+0

它工作。但它又一次造成了一些其他問題。當我點擊另一個按鈕進行另一個播放時,先前的播放停止。我不希望它停止,直到我告訴它明確停止。我希望它繼續玩,直到我手動告訴它停止播放。 – Deb

+0

然後,你需要更多的線程。 – Mat

+0

我爲他們製作了兩個獨立的線程。線程1和線程2.所以我想要線程2在線程1正在播放時播放。我如何做到這一點。 – Deb