Russian Qt Forum

Qt => Общие вопросы => Тема начата: cefire от Ноябрь 03, 2012, 15:44



Название: Phonon + QAnimation
Отправлено: cefire от Ноябрь 03, 2012, 15:44
Доброго времени суток!
Я наконец-то собрал статически Phonon. У меня такая проблема:
При клике на кнопку должно плавно появиться окно (Через QAnimation  за 500 мс)
В это же время должен проиграть звук.

Без звука всё работает идеально, но со звуком анимация начинает притормаживать!
Пробовал звук запускать в другом потоке, ничего не изменилось.
Может, кто сталкивался с такой проблемой?
Заранее спасибо.


Название: Re: Phonon + QAnimation
Отправлено: navrocky от Ноябрь 05, 2012, 10:53
Дай сорцы. Телепатический шлем сломался (


Название: Re: Phonon + QAnimation
Отправлено: cefire от Ноябрь 05, 2012, 11:16
Всё, разобрался! Поток не правильно создавал.
Сейчас всё норм.
Код:
#include "music.h"
#include <phonon/audiooutput.h>
#include <phonon/private/factory_p.h>
#include <QtPlugin>

using namespace Phonon;
Music::Music(QObject *parent) :
    QThread(parent)
{
}
void Music::PlayOpen(){
    player->setCurrentSource(*open);
    player->play();
}
void Music::mOpen(){
    emit pOpen();
}
void Music::mClose(){
    emit pClose();
}

void Music::PlayClose(){
    player->setCurrentSource(*close);
    player->play();
}
void Music::init(){
    player = new MediaObject;
    player->setTransitionTime(1);
    out = new AudioOutput(NotificationCategory,0);
    createPath(player, out);
    out->setVolume(0.5);
    open=new MediaSource("sound/open.mp3");
    close=new MediaSource("sound/close.mp3");
    connect(player,SIGNAL(finished()),player,SLOT(stop()));
    connect(this,SIGNAL(pOpen()),this,SLOT(PlayOpen()));
    connect(this,SIGNAL(pClose()),this,SLOT(PlayClose()));
}

void Music::run(){
    Q_IMPORT_PLUGIN(phonon_ds9)
    Factory::setBackend(qt_plugin_instance_phonon_ds9());
    qRegisterMetaType<State>();
    qRegisterMetaType<MediaSource>("MediaSource");
    init();
    exec();
}