Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
gecheim
14 / 14 / 5
Регистрация: 21.01.2012
Сообщений: 119
#1

Использование звуковых файлов - C++ Qt

16.12.2013, 03:20. Просмотров 697. Ответов 8
Метки нет (Все метки)

Здравствуйте.
При использовании внешних файлов не в ресурсах, не находит их, если указать не абсолютный путь.
Исходный код
mainwindow.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <pole.h>
#include <QSpinBox>
#include <QDoubleSpinBox>
#include <QPushButton>
#include <QLabel>
#include <QLCDNumber>
#include <QMessageBox>
#include <QtMultimedia/QMediaPlayer>
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
    
public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
private:
    Pole *gl;
    QSpinBox *ugol;
    QDoubleSpinBox *skorost;
    QPushButton *pusk;
    QLabel *label1,*label2,*label3;
    QLCDNumber *p1,*p2;
    QMessageBox mes;
    QMediaPlayer *sound;
    int pop;//оставшиеся попытки
public slots:
    void naprMove();
    void changeUgol(int u);
    void changeStatus(int res);
};
 
#endif // MAINWINDOW_H
mainwindow.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#include "mainwindow.h"
#include <QFormLayout>
#include <math.h>
#include <QFile>
#define MAS 10
#define ACTIV "plauer_activate"
 
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QFile f(":/style.css");
    f.open(QFile::ReadOnly);
    if(f.isOpen())
    {
        QString s=f.readAll();
        setStyleSheet(s);
    }
    QWidget *w=new QWidget(this);
    QHBoxLayout *hl=new QHBoxLayout;
    QFormLayout *fl=new QFormLayout;
    QVBoxLayout *vl=new QVBoxLayout(w);
    gl=new Pole(w);
    ugol=new QSpinBox(w);
    skorost=new QDoubleSpinBox(w);
    pusk=new QPushButton(QString::fromUtf8("Ударить"),w);
    label1=new QLabel(QString::fromUtf8("Угол удара"),w);
    label2=new QLabel(QString::fromUtf8("Начальная скорость"),w);
    label3=new QLabel(QString::fromUtf8("Счет"),w);
    QFrame *fr=new QFrame(w);
    p1=new QLCDNumber(fr);
    p2=new QLCDNumber(fr);
    sound=new QMediaPlayer(this);
    vl->addWidget(gl);
    vl->addLayout(hl);
    fl->addRow(label1,ugol);
    fl->setFormAlignment(Qt::AlignVCenter);
    fl->setSpacing(5);
    hl->addLayout(fl);
    hl->addSpacerItem(new QSpacerItem(5,5,QSizePolicy::Expanding));
    fl=new QFormLayout;
    fl->setFormAlignment(Qt::AlignVCenter);
    fl->addRow(label2,skorost);
    fl->setSpacing(5);
    hl->addLayout(fl);
    hl->addSpacerItem(new QSpacerItem(5,5,QSizePolicy::Expanding));
    hl->addWidget(pusk);
    hl->addWidget(fr);
    fr->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);
    vl=new QVBoxLayout(fr);
    hl=new QHBoxLayout;
    vl->addLayout(hl);
    vl->setMargin(0);
    hl->setMargin(0);
    hl->addSpacerItem(new QSpacerItem(5,5,QSizePolicy::Expanding));
    hl->addWidget(label3);
    hl->addSpacerItem(new QSpacerItem(5,5,QSizePolicy::Expanding));
    hl=new QHBoxLayout;
    vl->addLayout(hl);
    hl->addWidget(p1);
    hl->addWidget(p2);
    setCentralWidget(w);
    connect(skorost,SIGNAL(valueChanged(double)),this,SLOT(naprMove()));
    connect(gl,SIGNAL(result(int)),this,SLOT(changeStatus(int)));
    connect(ugol,SIGNAL(valueChanged(int)),this,SLOT(naprMove()));
    connect(pusk,SIGNAL(clicked()),gl,SLOT(start()));
    connect(gl,SIGNAL(ugolChanged(int)),this,SLOT(changeUgol(int)));
    ugol->setMaximum(90);
    ugol->setMinimum(0);
    skorost->setSingleStep(0.01d);
    skorost->setMaximum(520.0d);
    skorost->setValue(10.0d);
    ugol->setValue(20);
    fr->setFrameShape(QFrame::NoFrame);
    p1->setDigitCount(2);
    p1->setSegmentStyle(QLCDNumber::Flat);
    p1->setObjectName(ACTIV);
    p1->setFrameShape(QFrame::NoFrame);
    p1->setMinimumHeight(30);
    p2->setDigitCount(2);
    p2->setSegmentStyle(QLCDNumber::Flat);
    p2->setFrameShape(QFrame::NoFrame);
 //   p2->display(30);
 //   p1->display(45);
    pop=2;
    setMinimumWidth(500);
    setMinimumHeight(200);
    sound->setMedia(QUrl::fromLocalFile("fon.wav"));
    sound->setVolume(50);
    sound->play();
}
 
MainWindow::~MainWindow()
{
    delete gl;
    delete ugol;
    delete skorost;
    delete pusk;
    delete label1;
    delete label2;
    delete label3;
    delete p1;
    delete p2;
}
 
void MainWindow::naprMove()
{
    gl->setNapr(ugol->value(),skorost->value());
}
 
void MainWindow::changeUgol(int u)
{
    ugol->setValue(u);
}
 
void MainWindow::changeStatus(int res)
{
    if(res==-1)
    {
        pusk->setEnabled(false);
    }
    else
    {
        if(p1->objectName()==ACTIV)
        {
            p1->display(p1->value()+res*3);
            gl->setPlauer(1);
            p1->setObjectName("n");
            p2->setObjectName(ACTIV);
            pusk->setEnabled(true);
            gl->setWidth(rand()%400+300);
        }
        else
        {
            if(pop)
            {
                pusk->setEnabled(true);
                p1->setObjectName(ACTIV);
                gl->setWidth(rand()%400+300);
                pop--;
            }
            else
            {
                mes.setIcon(p1->value()==p2->value()?QMessageBox::Information:QMessageBox::Warning);
                mes.setText(p1->value()==p2->value()?QString::fromUtf8("Ничья"):
                                                            QString::fromUtf8("Победил игрок %1").arg(
                                                                p1->value()>p2->value()?1:2));
                mes.setWindowTitle(p1->value()==p2->value()?QString::fromUtf8("Ничья"):QString::fromUtf8("Поздравляем"));
                mes.show();
            }
            p2->display(p2->value()+res*3);
            p2->setObjectName("n");
            gl->setPlauer(0);
        }
        naprMove();
        setStyleSheet(styleSheet());
    }
}

С чем это может быть связано?
http://www.cyberforum.ru/qt/thread2119941.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2013, 03:20
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Использование звуковых файлов (C++ Qt):

Отсутствие звуковых эффектов при запуске *.exe
Добрый вечер! Собираю проект на релиз. Если запускаю в Qt, то все нормально,...

Подсчет размеров файлов в байтах. Ошибки вычисления если файлов значительно количество
Здравствуйте. Рекурсивная функция пробегает по директории и поддиректориям,...

Использование двух звуковых карт!
Здравствуйте, я прикупил себе дешевую звуковуху, поставил, старая...

Использование нескольких звуковых карт
Всем привет. для контроля аудиоканалов используем бобинный многоканальный...

Обработка звуковых файлов
Меня интересует обработка звука на с++, но сам с этой темой практически не...

8
RazrFalcon
1384 / 1241 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
16.12.2013, 04:04 #2
Просто посмотрите что передаете:
C++ (Qt)
1
qDebug() << QUrl::fromLocalFile("fon.wav");
Для fromLocalFile нужно задавать абсолютный путь.
1
gecheim
14 / 14 / 5
Регистрация: 21.01.2012
Сообщений: 119
16.12.2013, 10:42  [ТС] #3
а как тогда будет правильно задать файл по относительному пути?

вот, что вывелось
Код
Запускается D:\build-mult-Desktop_Qt_5_1_1_MinGW_32bit-Release\release\mult.exe...
 QUrl( "file:fon.wav" )  
D:\build-mult-Desktop_Qt_5_1_1_MinGW_32bit-Release\release\mult.exe завершился с кодом 0
0
RazrFalcon
1384 / 1241 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
16.12.2013, 10:46 #4
C++ (Qt)
1
QUrl::fromLocalFile(qApp->applicationDirPath() + "/" + "file:fon.wav")
1
gecheim
14 / 14 / 5
Регистрация: 21.01.2012
Сообщений: 119
16.12.2013, 20:29  [ТС] #5
спасибо за помощь, все работает

Добавлено через 1 час 39 минут
запустил не из IDE, звук не воспроизводится.
проверил MediaStatus выводит значение UnknownMediaStatus
0
RazrFalcon
1384 / 1241 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
17.12.2013, 01:09 #6
Плагин фонона в папке с проектом есть, как и все нужные либы?
1
gecheim
14 / 14 / 5
Регистрация: 21.01.2012
Сообщений: 119
17.12.2013, 22:02  [ТС] #7

если бы либы были не все прога вообщене запускалась бы ведь.
0
RazrFalcon
1384 / 1241 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
18.12.2013, 04:58 #8
Цитата Сообщение от gecheim Посмотреть сообщение
если бы либы были не все прога вообщене запускалась бы ведь.
Без плагинов будет запускаться, но не будет работать.
Вам нужен: phonon_backend/phonon_ds94.dll
По крайней мере в 4м qt так он зовется.
1
gecheim
14 / 14 / 5
Регистрация: 21.01.2012
Сообщений: 119
18.12.2013, 16:09  [ТС] #9
у меня нету вообще либы phonon*.dll на компе
0
18.12.2013, 16:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2013, 16:09
Привет! Вот еще темы с решениями:

Проигрывание звуковых файлов
Кто-нить знает как на форму &quot;прилепить&quot; звуки, причём чтобы ими ещё и управлять...

Редактор звуковых файлов
Какая api-функция используется для загрузки звуковых файлов в рабочую область...

Хранение звуковых файлов
Скажите пожалуйста, можно ли хранить в БД Access звуковые файлы (wav) и...

Обработка звуковых файлов
Товарищи, с помощью каких библиотек, заголовочных файлов, структур, классов и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru