Одновременный запуск потоков с использованием Qt

У меня проблема. У меня есть Qiwidget с двумя кнопками. При нажатии одной кнопки мне нужно воспроизвести 1 файл, используя некоторую технику воспроизведения. Нажав другую кнопку, я хочу воспроизвести другой файл. Я создал классы, используя воспроизведение двух файлов в виде потоков. Но когда я пытаюсь нажать 1-ю кнопку, мое приложение застревает, и я не могу нажать вторую кнопку. Он блокируется, пока мое воспроизведение не закончится.

Я хочу иметь возможность использовать свое основное приложение независимо от воспроизводимых файлов. Как я могу добиться этого в Qt.

воспроизведение файла 1.h ..

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

playfile.cpp

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

теперь в моем основном файле .cpp, когда я запускаю такой код, как:

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

}

мой код блокируется воспроизведением потока. Но я не хочу, чтобы его блокировали. Пожалуйста помоги.


person Deb    schedule 22.06.2011    source источник


Ответы (1)


Вам следует позвонить

playSource1->start();

не run(). См. Раздел «Запуск потока» в статье Запуск потоков Qt с помощью QThread документация.

person Mat    schedule 22.06.2011
comment
Это сработало. Но это опять же создает другую проблему. Когда я нажимаю другую кнопку для другого воспроизведения, предыдущее воспроизведение останавливается. Я не хочу, чтобы он останавливался, пока я не скажу, чтобы он остановился явно. Я хочу, чтобы он продолжал играть, пока я вручную не скажу ему, чтобы он прекратил играть ... - person Deb; 23.06.2011
comment
Я сделал для них две отдельные нити. Поток 1 и поток 2. Итак, я хочу, чтобы поток 2 воспроизводился, пока воспроизводится поток 1. Как мне этого добиться. - person Deb; 23.06.2011