Phonon. Элементы GUI.

    Доброго времени суток, в этой статье мы рассмотрим работу графических виджетов Phonon на примере простого видео проигрывателя.
    Ну и без лишних слов идем в designer и конструируем форму амебного проигрывателя, для этого используем вкладку phonon.

    Вот моя форма:

Phonon. Элементы управления рис. 1

    Теперь давайте разберемся,что у меня на форме. Черный квадрат в центре это виджет Phonon::VideoPlayer,мы с ним уже сталкивались в предыдущей статье, далее идет Phonon::seekSlider отображающий прогресс воспроизведения, ниже Phonon::volumeSlider управляющий громкостью. Две метки справа и слева (думаю будет лишним напоминать, что это QLabel) я положил на форму для отображения времени с лева общего времени воспроизведения,а справа текущего времени воспроизведения. Что касается времени,то оно всегда представляется в миллисекундах, так уж сложилось в программировании мультимедиа и Phonon не исключение. В меню присутствуют два пункта «Открыть» и «Выход». Для простоты ограничим спектр открываемых файлов форматом avi, но опять таки все зависит от установленных в системе кодеков и готовности ковыряться. И так,начнем писать код. Для   трансляции  времени я возьму класс Microtime из своего проекта о котором я рассказывал в блоге Аудиоплеер на Phonon своими руками

    Если кому интересны подробности, скачайте исходник к статье, тут мы рассмотрим только код налаживающий взаимодействие элементов Phonon друг с другом. Делается это до безобразия просто, приведу код конструктора главной формы:


MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->m_allTime->setText("00:00");
    ui->m_currentTime->setText("00:00");

    //Простим слайдер прогресса воспроизведения реагировать на течение
    //потока связанного с плеером
    ui->m_seekSlider->setMediaObject(ui->m_player->mediaObject());

    //Просим так же слайдер громкости взаимодействовать с аудио выходом
    //нашего плеера
    ui->m_volume->setAudioOutput(ui->m_player->audioOutput());


    connect(ui->m_exitAction,SIGNAL(triggered()),SLOT(close()));
    connect(ui->m_openAction,SIGNAL(triggered()),SLOT(openFile()));
    connect(ui->m_pauseButton,SIGNAL(clicked()),ui->m_player,SLOT(pause()));
    connect(ui->m_playButton,SIGNAL(clicked()),ui->m_player,SLOT(play()));
    connect(ui->m_stopButton,SIGNAL(clicked()),ui->m_player,SLOT(stop()));
    connect(ui->m_player->mediaObject(),SIGNAL(tick(qint64)),SLOT(updateTime(qint64)));
    connect(ui->m_player-   >mediaObject(),SIGNAL(totalTimeChanged(qint64)),SLOT(setTotalTime(qint64)));
}

    Теперь скачиваем исходник к статье, компилим и наслаждаемся видео. Если возникли вопросы, задавайте, буду рад оказаться полезен. Вот что получилось у меня:

Phonon. Элементы управления рис. 1

    Благодарю за внимание, в следующих статьях мы начнем работать с потоком на уровне эффектов, но всему свое время. До новых встреч!


Прикрепленные файлы:

Исходники к статье. (Загрузок: 195)

Добавлена: 27-05-2009 | Изменена: 27-05-2009 | Пользователем: gnudimarik | Просмотров: 2024

Комментарии

funtik 28-04-2010 15:56
>для этого используем вкладку phonon.

подскажите, а где конкретно эта вкладка? у меня такой нет
gnudimarik 26-08-2010 00:28
Можно попробовать воспользоваться механизмом продвижения в QtDesigner.Положить на форму QSlider и преобразовать его Phonon::SeekSlider.
Satana 25-08-2010 22:44
Подскажите, а как поменять класс у виджета? Допустим у слайдера сделать не QSlider,а Phonon::SeekSlider как в вашей программе.
gnudimarik 26-08-2010 00:30
> подскажите, а где конкретно эта вкладка? у меня такой нет
Если при этом фонон установлен,у меня было что то подобное,когда я собирал фонон сам,и то как то настроил (на linux),не помню :)
Satana 26-08-2010 15:44
Скажите пожалуйста какие библиотеки нужны для для работы плеера без установленной Qt ?
gnudimarik 27-08-2010 02:20
Не понял вопрос.Плз дайте знать какая система.Так же что значт без установленной Qt?Имеется в виду без пакетов для разработки?
Satana 27-08-2010 07:49

>Не понял вопрос.Плз дайте знать какая система.Так же что значт без установленной Qt?Имеется в виду без пакетов для разработки?


Совершенно верно! СистемаWin XP у меня и Win 7 удруга (у него тестили.)

gnudimarik 01-09-2010 20:47
Честно говоря давно не гонял windows (я linux программист),гоняю иногда xp на вм.
Думаю,что на windows будут необходимы dll Qt модулей которые использует программа и их зависимостей,так же какие то либы от компилера,потому,что Qt наверняка использует STL.
определенно потребуются libQtGui.dll,libQtCore.dll,libQtPhonon.dll или что там,могу ошибиться в названиях.Где то валялся проект,я собирал его на mingw и распространял как то на windows,нужно найти поглядеть,что я там переносил...
А вообще гугл ваш друг,думаю,что народ занимается этим довольно часто.
gnudimarik 01-09-2010 20:49
кому нибудь кстати интересен gstreamer?
у меня тут опыта поднакопилось с ним,по работе сталкивался.Делал видео захват и воспроизводил звук.Руки не доходят правда до статей...
Но если кому нить интересно,найду время в ближайшем будущем :-)


Оставить комментарий



Капча *

Captcha

Комментарий будет опубликован после проверки модератором

Для подсветки синтаксиса исходный код следует обрамлять следующими тэгами
<pre><code class="синтаксис" >код</code></pre>
Подерживаются следующие: cpp php javascript sql html-xml css ini