2

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

再生中のファイルに関係なく、メインアプリケーションを使用できるようにしたい。どうすればQtでそれを達成できますか。

再生ファイル1.h.。

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

playingfile.cpp

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

次のようなコードを実行すると、メインファイルの.cppになります。

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

}

私のコードはスレッドの再生によってブロックされます。しかし、私はそれがブロックされることを望んでいません。助けてください。

4

1 に答える 1

4

あなたは電話する必要があります

playSource1->start();

ではありませんrun()Qtの「QThreadを使用したスレッドの開始」ドキュメントの「スレッドの開始」セクションを参照してください。

于 2011-06-22T15:49:55.500 に答える