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

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


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

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

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


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



Капча *

Captcha

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

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