Запуск потоков одновременно с использованием Qt - PullRequest
2 голосов
/ 22 июня 2011

У меня проблема. У меня есть Qiwidget, который имеет 2 кнопки. При нажатии одной кнопки мне нужно воспроизвести 1 файл, используя некоторую технику воспроизведения. При нажатии на другую кнопку я хочу воспроизвести другой файл. Я сделал классы, используя воспроизведение для двух файлов в качестве потоков. Но когда я пытаюсь нажать 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 ]

4 голосов
/ 22 июня 2011

Вы должны позвонить

playSource1->start();

, а не run().Смотрите раздел «Запуск потока» в документации Qt Запуск потоков с QThread .

0 голосов
/ 27 июня 2011

Попробуйте добавить exec () в конец функции run () и взгляните на sbj функции moveToThread () Qt moveToThread () против вызова нового потока, когда мы используем каждый .Возможно, это поможет вам.

...