Russian Qt Forum
Ноябрь 22, 2024, 17:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Phonon : проблема с предком у видео виджета  (Прочитано 2426 раз)
Hrundel
Гость
« : Август 30, 2013, 22:57 »

Всем привет,

первый опыт с Phonon немного заводит в тупик. Нужна ваша помощь.
Странный для меня расклад - использую Qlabel в качестве видео виджета, но как только вяжу его с предком, а именно - с MainWindow перестает показывать видео.

В коде выглядит так:

Код:
videoPlayerViewPort = new QLabel(this);
    videoPlayerViewPort->setGeometry(0,0, DataExchange::instance().getDeskWidth(), DataExchange::instance().getDeskHeight());

    //Создаем видео виджет
    vw = new Phonon::VideoWidget(videoPlayerViewPort);

    //назначаем имя файла
    object.setCurrentSource(Phonon::MediaSource(":/img/video/intro.avi"));
    vw->setGeometry(0,0, DataExchange::instance().getDeskWidth(), DataExchange::instance().getDeskHeight());
    vw->setScaleMode(Phonon::VideoWidget::FitInView);

    //рендерер потока звука
    Phonon::AudioOutput audio(Phonon::VideoCategory);

    //связь с аудио потоком
    Phonon::createPath(&object,&audio);

    //связь с видио потоком
    Phonon::createPath(&object,vw);

//воспроизведение
    object.play();

    videoPlayerViewPort->show();

    QEventLoop loop; QTimer::singleShot(5000, &loop, SLOT(quit())); loop.exec();

Посоветуйте решение.

Всем спасибо!
« Последнее редактирование: Август 31, 2013, 16:36 от Hrundel » Записан
Hrundel
Гость
« Ответ #1 : Август 31, 2013, 16:35 »

Проблему решил!

Скажу кратко:

Сначала создаем QLabel для видео виджета не задавая родителя:

Код:
videoPlayerViewPort = new QLabel();

    //Создаем видео виджет
    vw = new Phonon::VideoWidget(videoPlayerViewPort);
    vw->setGeometry(-2,-2, DataExchange::instance().getDeskWidth()+40, DataExchange::instance().getDeskHeight()+40);
    vw->setScaleMode(Phonon::VideoWidget::FitInView);

    object = new Phonon::MediaObject(this);

    object->setCurrentSource(Phonon::MediaSource(":/img/video/intro.avi"));

    //рендерер потока звука
    Phonon::AudioOutput audio(Phonon::VideoCategory);

    //связь с аудио потоком
    Phonon::createPath(object,&audio);

    //связь с видио потоком
    Phonon::createPath(object,vw);

потом после включения воспроизведения вяжем его к родителю и делаем видимым

Код:
    //воспроизведение
    object->play();

    videoPlayerViewPort->setParent(this);
    videoPlayerViewPort->setGeometry(-2,-2, DataExchange::instance().getDeskWidth()+40, DataExchange::instance().getDeskHeight()+40);
    videoPlayerViewPort->show();
    vw->show();

    QEventLoop loop; QTimer::singleShot(1000, &loop, SLOT(quit())); loop.exec();
    object->stop();
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 21.