Phonon. Элементы GUI.
Доброго времени суток, в этой статье мы рассмотрим работу графических виджетов Phonon на примере простого видео проигрывателя.
Ну и без лишних слов идем в designer и конструируем форму амебного проигрывателя, для этого используем вкладку phonon.
Вот моя форма:
Теперь давайте разберемся,что у меня на форме. Черный квадрат в центре это виджет Phonon::VideoPlayer,мы с ним уже сталкивались в предыдущей статье, далее идет Phonon::seekSlider отображающий прогресс воспроизведения, ниже Phonon::volumeSlider управляющий громкостью. Две метки справа и слева (думаю будет лишним напоминать, что это QLabel) я положил на форму для отображения времени с лева общего времени воспроизведения,а справа текущего времени воспроизведения. Что касается времени,то оно всегда представляется в миллисекундах, так уж сложилось в программировании мультимедиа и Phonon не исключение. В меню присутствуют два пункта «Открыть» и «Выход». Для простоты ограничим спектр открываемых файлов форматом avi, но опять таки все зависит от установленных в системе кодеков и готовности ковыряться. И так,начнем писать код. Для трансляции времени я возьму класс Microtime из своего проекта о котором я рассказывал в блоге Аудиоплеер на Phonon своими руками
Если кому интересны подробности, скачайте исходник к статье, тут мы рассмотрим только код налаживающий взаимодействие элементов Phonon друг с другом. Делается это до безобразия просто, приведу код конструктора главной формы:
Теперь скачиваем исходник к статье, компилим и наслаждаемся видео. Если возникли вопросы, задавайте, буду рад оказаться полезен. Вот что получилось у меня:
Благодарю за внимание, в следующих статьях мы начнем работать с потоком на уровне эффектов, но всему свое время. До новых встреч!
Ну и без лишних слов идем в designer и конструируем форму амебного проигрывателя, для этого используем вкладку phonon.
Вот моя форма:
Теперь давайте разберемся,что у меня на форме. Черный квадрат в центре это виджет 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.
подскажите, а где конкретно эта вкладка? у меня такой нет
Можно попробовать воспользоваться механизмом продвижения в QtDesigner.Положить на форму QSlider и преобразовать его Phonon::SeekSlider.
Подскажите, а как поменять класс у виджета? Допустим у слайдера сделать не QSlider,а Phonon::SeekSlider как в вашей программе.
> подскажите, а где конкретно эта вкладка? у меня такой нет
Скажите пожалуйста какие библиотеки нужны для для работы плеера без установленной Qt ?
Не понял вопрос.Плз дайте знать какая система.Так же что значт без установленной Qt?Имеется в виду без пакетов для разработки?
>Не понял вопрос.Плз дайте знать какая система.Так же что значт без установленной Qt?Имеется в виду без пакетов для разработки?
Совершенно верно! СистемаWin XP у меня и Win 7 удруга (у него тестили.)
Честно говоря давно не гонял windows (я linux программист),гоняю иногда xp на вм.
кому нибудь кстати интересен gstreamer?