crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Phonon открытие видеофайла
Snikersoman
  опции профиля:
сообщение 4.12.2010, 20:27
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 33
Регистрация: 14.11.2010
Пользователь №: 2187

Спасибо сказали: 0 раз(а)




Репутация:   0  


Доброго времени суток господа программисты пишу вам по такому вопросу: у меня в программе есть видео плеер и требуется чтобы по нажатии кнопки плеер начал воспроизводить определенный видеофайл (лежит у экзешника). Тоесть сам без стандартного окошка выбора файла. Вот листинг видео плеера который я взял за основу:
Video.pro
Раскрывающийся текст
######################################################################
# Automatically generated by qmake (2.01a) ?? 14. ??? 21:28:46 2008
######################################################################

TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
QT += phonon

# Input
HEADERS += mainwin.h
SOURCES += main.cpp mainwin.cpp

mainwin.h
Раскрывающийся текст
#ifndef _MAINWIN_H_
#define _MAINWIN_H_

#include <QtGui>
#include <phonon>

// using namespace Phonon;

class Mainwin : public QMainWindow {
        Q_OBJECT
public:
        Mainwin();
private slots:
        void selectfile();
        void playfile();
        void setvolume(int);
private:
        Phonon::VideoPlayer *player;
        QToolBar *toolbar;
        QPushButton *openbutton, *playbutton, *pausebutton, *stopbutton;
        QSlider *volumeslider;
        Phonon::SeekSlider *seekslider;

};
#endif // _MAINWIN_H_

main.cpp
Раскрывающийся текст
#include <QtGui>
#include <mainwin.h>

int main(int argv, char **args){
    QApplication app(argv, args);
    app.setApplicationName("Video Player");
    Mainwin win;
    win.show();
    return app.exec();
}

mainwin.cpp
Раскрывающийся текст
#include <QtGui>
#include "mainwin.h"

Mainwin::Mainwin(){
    QWidget *widget = new QWidget(this);
    QVBoxLayout *lay = new QVBoxLayout(widget);
    
    player = new Phonon::VideoPlayer(Phonon::VideoCategory);
    lay->addWidget(player, 1);
    
    seekslider = new Phonon::SeekSlider;
    seekslider->setMediaObject(player->mediaObject());
    lay->addWidget(seekslider, 0);
    
    toolbar = addToolBar(tr("toolbar"));
    
    openbutton = new QPushButton(tr("Open"), toolbar);
    toolbar->addWidget(openbutton);
    connect(openbutton, SIGNAL(clicked()), this, SLOT(selectfile()));
    
    playbutton = new QPushButton(tr("Play"), toolbar);
    toolbar->addWidget(playbutton);
    connect(playbutton, SIGNAL(clicked()), this, SLOT(playfile()));
    
    stopbutton = new QPushButton(tr("Stop"), toolbar);
    toolbar->addWidget(stopbutton);
    connect(stopbutton, SIGNAL(clicked()), player, SLOT(stop()));
    
    pausebutton = new QPushButton(tr("Pause"), toolbar);
    toolbar->addWidget(pausebutton);
    connect(pausebutton, SIGNAL(clicked()), player, SLOT(pause()));
    
    volumeslider = new QSlider(Qt::Horizontal, toolbar);
    volumeslider->setRange(0, 100);
    volumeslider->setValue(100);
    connect(volumeslider, SIGNAL(valueChanged(int)), this,
            SLOT(setvolume(int)));
    toolbar->addWidget(volumeslider);
    
    widget->setLayout(lay);
    setCentralWidget(widget);
}

void Mainwin::selectfile(){
    QString filename = QFileDialog::getOpenFileName(
        this, tr("Select video file"), ".");

    if (filename.isEmpty())
        return;

    player->play(filename);
    resize(sizeHint());
}

void Mainwin::playfile(){
    player->play();
    resize(sizeHint());
}

void Mainwin::setvolume(int value){
    float volume;
    volume = (static_cast<float>(value)) / 100;
    player->setVolume(volume);
}

Данный плеер рабочий и свои функции он выполняет, мне кажется что если заменить в этой части
void Mainwin::selectfile(){
    QString filename = QFileDialog::getOpenFileName(
        this, tr("Select video file"), ".");

    if (filename.isEmpty())
        return;

    player->play(filename);
    resize(sizeHint());
}

Переменную filename на название искомого файла или же просто вписать вместо нее название то я получу то что мне нужно:
void Mainwin::playfile(){
    player->play("1.avi");
    resize(sizeHint());
}

пробовал так однако нефига не получается((( Думаю из за того что действую в корне не верно...
Посему вопрос: как это реализовать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
igor_bogomolov
  опции профиля:
сообщение 4.12.2010, 21:22
Сообщение #2


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Смотрите внимательнее документацию, play не может принимать const char*, а во вторых нужно указывать полный путь до файла.
Сделайте так и будет счастье
player->play(QApplication::applicationDirPath() + QDir::separator() + QLatin1String("1.avi"));
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.12.2024, 11:17