2011-06-22 34 views
2

問題があります。私は2つの押しボタンを持つQiwidgetを持っています。私はいくつかの再生技術を使用して1つのファイルを再生する必要が1つのボタンを押す。他のボタンをクリックすると、別のファイルを再生したいです。スレッドとして2つのファイルの再生を使ってクラスを作った。しかし、私が最初のボタンを押してみると、アプリケーションが止まって2番目のボタンを押すことができません。私の再生が終わるまでブロックされます。Qtを使って同時実行スレッド

再生しているファイルに関係なく、私のメインアプリケーションを使用したいと考えています。どのように私はQtでそれを達成することができます。

再生ファイル1.H ..

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

が今の私のメインのファイル.CPPに私はのようなコードを実行

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

playbackfile.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

私はそれらのために2つの別々の糸を作った。スレッド1とスレッド2です。だから私はスレッド1が再生されている間、スレッド2を再生したい。どのように私はそれを達成するのですか? – Deb

関連する問題