Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
fredwriter
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 307
#1

Phonon: не понятная ошибка - C++ Qt

27.04.2015, 09:44. Просмотров 572. Ответов 18
Метки нет (Все метки)

Здравствуйте, что-то как-то не работает Phonon, выдает ошибку, подскажите пожалуйста, вот код:
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
/*
 * File:   main.cpp
 * Author: u0807
 *
 * Created on 10 марта 2015 г., 15:57
 */
 
#include "myClass.h"
 
 
    QString ping_Around;
    QStringList arguments;
    QStringList arguments1;
    QStringList arguments2;
    QStringList arguments3;
    QProcess myProcess;
    QProcess myProcess1;
    QProcess myProcess2;
    QProcess myProcess3;
    QStringList strlstPingResults;
    QStringList strlstPingResults1;
    QStringList strlstPingResults2;
    QStringList strlstPingResults3;
    QStringList Ss[4];
    QGraphicsTextItem* itemText[4];
    QString count_Pack[4];
    QPushButton* Add_Host;
    Phonon::MediaObject *mediaO;
 
 
void myClass::timer_overflow() {
    myProcess.start(ping_Around, arguments);
    myProcess.waitForFinished(1000);
    myProcess1.start(ping_Around, arguments1);
    myProcess1.waitForFinished(1000);
    myProcess2.start(ping_Around, arguments2);
    myProcess2.waitForFinished(1000);
    myProcess3.start(ping_Around, arguments3);
    myProcess3.waitForFinished(1000);
    
    strlstPingResults<<myProcess.readAll();
    Ss[0] = strlstPingResults[0].split('\n');
    strlstPingResults1<<myProcess1.readAll();
    Ss[1] = strlstPingResults1[0].split('\n');
    strlstPingResults2<<myProcess2.readAll();
    Ss[2] = strlstPingResults2[0].split('\n');
    strlstPingResults3<<myProcess3.readAll();
    Ss[3] = strlstPingResults3[0].split('\n');
    for (int i = 0; i < 4; i++) {
        if (Ss[i].count() > 1) {
            count_Pack[i] = Ss[i][4].mid(23, 1);
        }
    }
    for (int i = 0; i < 4; i++) {
        if (count_Pack[i].count() > 0) {
            if (count_Pack[i] == "1") {
                item[i]->setBrush(QBrush(Qt::green));
 
            }
        }
        else {
            item[i]->setBrush(QBrush(Qt::red));
        }
    }
    
}
 
 
void myClass::btnClicked() {
    
}
 
 
void myClass::slotFinished() {
    
}
 
myClass::myClass(QObject *parent): QGraphicsScene(parent) {
    QFont fontForButton;
    fontForButton.setPointSize(7);
    
    mediaO = new Phonon::MediaObject(this);
    
    QObject::connect(mediaO, SIGNAL(finished()), this, SLOT(slotFinished()));
    QString str("Active.wav");
    mediaO->setCurrentSource(str);
    mediaO->play();
    
    Add_Host = new QPushButton("&Add", 0);
    Add_Host->setFixedSize(23, 20);
    Add_Host->setGeometry(-94, 30, 23, 20);
    Add_Host->setFont(fontForButton);
    
    QObject::connect(Add_Host, SIGNAL(clicked()), this, SLOT(btnClicked()));
    QGraphicsProxyWidget * item_Widget = addWidget(Add_Host);
    Add_Host->show();
    
    ping_Around = "/bin/ping";
    arguments << "-c" << "1" << "10.31.3.130";
    arguments1 << "-c" << "1" << "10.31.4.130";
    arguments2 << "-c" << "1" << "10.31.5.130";
    arguments3 << "-c" << "1" << "10.31.6.130";
    this->setSceneRect(QRectF(-90, 0, 15, 15));
    
    for (int i = 0; i < 4; i++) {    
        item[i] = new QGraphicsEllipseItem(0, this);
        item[i]->setRect(QRectF(-90, -35 + (i * 16), 15, 15));
        item[i]->setBrush(QBrush(Qt::yellow));
    }
    itemText[1] = new QGraphicsTextItem(0, this);
    timer = new QTimer;
    QObject::connect(timer, SIGNAL(timeout()), this, SLOT(timer_overflow()));
    timer->start(4500);
}
 
 
int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    myClass m;
    QGraphicsView v(&m);
    v.setWindowFlags(Qt::WindowStaysOnTopHint);
    v.setRenderHints(QPainter::Antialiasing);
    v.show();
    v.setGeometry(1350, 700, 23, 90); 
    
    return app.exec();
}
вот вывод сборщика:

вывод сборщика
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE=/usr/bin/qmake SUBPROJECTS= .build-conf
make[1]: Вход в каталог `/home/u0807/NetBeansProjects/QtApplication_2'
/usr/bin/qmake VPATH=. -o qttmp-Debug.mk nbproject/qt-Debug.pro
mv -f qttmp-Debug.mk nbproject/qt-Debug.mk
"/usr/bin/make" -f nbproject/qt-Debug.mk dist/Debug/GNU_1-Linux-x86/QtApplication_2
make[2]: Вход в каталог `/home/u0807/NetBeansProjects/QtApplication_2'
g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -Inbproject -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -Inbproject -I. -o build/Debug/GNU_1-Linux-x86/main.o main.cpp
main.cpp: In constructor ‘myClass::myClass(QObject*)’:
main.cpp:89:33: warning: ‘Phonon::MediaSource::MediaSource(const QString&)’ is deprecated (declared at /usr/include/qt4/phonon/mediasource.h:144) [-Wdeprecated-declarations]
mediaO->setCurrentSource(str);
^
main.cpp:98:28: warning: unused variable ‘item_Widget’ [-Wunused-variable]
QGraphicsProxyWidget * item_Widget = addWidget(Add_Host);
^
g++ -o dist/Debug/GNU_1-Linux-x86/QtApplication_2 build/Debug/GNU_1-Linux-x86/main.o build/Debug/GNU_1-Linux-x86/moc_myClass.o -L/usr/lib/i386-linux-gnu -lQtGui -lQtCore -lpthread
build/Debug/GNU_1-Linux-x86/main.o: In function `myClass::myClass(QObject*)':
/home/u0807/NetBeansProjects/QtApplication_2/main.cpp:85: undefined reference to `Phonon::MediaObject::MediaObject(QObject*)'
/home/u0807/NetBeansProjects/QtApplication_2/main.cpp:89: undefined reference to `Phonon::MediaSource::MediaSource(QString const&)'
/home/u0807/NetBeansProjects/QtApplication_2/main.cpp:89: undefined reference to `Phonon::MediaObject::setCurrentSource(Phonon::MediaSource const&)'
/home/u0807/NetBeansProjects/QtApplication_2/main.cpp:89: undefined reference to `Phonon::MediaSource::~MediaSource()'
/home/u0807/NetBeansProjects/QtApplication_2/main.cpp:90: undefined reference to `Phonon::MediaObject:lay()'
/home/u0807/NetBeansProjects/QtApplication_2/main.cpp:89: undefined reference to `Phonon::MediaSource::~MediaSource()'
collect2: error: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU_1-Linux-x86/QtApplication_2] Ошибка 1
make[2]: Выход из каталога `/home/u0807/NetBeansProjects/QtApplication_2'
make[1]: *** [.build-conf] Ошибка 2
make[1]: Выход из каталога `/home/u0807/NetBeansProjects/QtApplication_2'
make: *** [.build-impl] Ошибка 2

СОБРАТЬ FAILED (значение выхода 2,, общее время: 3s)


Добавлено через 1 час 43 минуты
Внес кое-какие изменения
код объявления перенёс в заголовочный файл:


C++ (Qt)
1
Phonon::MediaObject *mediaO;

Убрал this при создании объекта phonon


C++ (Qt)
1
2
3
mediaO = new Phonon::MediaObject; //это
//вместо
mediaO = new Phonon::MediaObject(this); //этого

И пробовал перенести код запуска файла в слот slotFinished():



C++ (Qt)
1
2
3
4
5
void myClass::slotFinished() {
    QString str("Active.wav");
    mediaO->setCurrentSource(str);
    mediaO->play();
}

То есть сделал все так как при создании таймера.
Не помогло, те же самые ошибки.

Добавлено через 1 час 12 минут
Вроде как линковщик не находит библиотеку phonon. Подскажите, где у qt хранятся по умолчанию библиотеки, я нашел у себя файл libphonon.so, это то что нужно? Установил кучу пакетов phonon, как его теперь прикрутить к проекту?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2015, 09:44
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Phonon: не понятная ошибка (C++ Qt):

Ошибка phonon в релизе на некоторых компах
Есть программа, использующая phonon для воспроизведения звука. Звуковые файлы...

Не собирается, не запускается. Ошибка: Unknown module(s) in QT: phonon
Всем привет! Столкнулся с проблемой, запускаю проект, написанный на Qt, но при...

Phonon
как должен выглядеть профайл чтобы phonon был доступен программе ? Добавлено...

Phonon
Собственно, узнал о существовании модуля для Qt, называемого Phonon. В...

Phonon vs GStreamer
Нужно в приложение добавить звука. Вот решаю какую библиотеку использовать....

Библиотека Phonon
Есть видеоурок в котором говорится что библиотека Phonon с какой-то версии Qt...

18
alexey_rage
590 / 390 / 79
Регистрация: 23.10.2013
Сообщений: 1,143
27.04.2015, 17:05 #2
В .pro файле добавить QT += phonon
0
fredwriter
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 307
28.04.2015, 05:02  [ТС] #3
В qt-Debug.pro нужно добавить? Я добавил в qt-Debug.pro QT += phonon, но эта строка удаляется когда начинается сборка.
0
Мотороллер
431 / 242 / 43
Регистрация: 05.08.2013
Сообщений: 1,661
Завершенные тесты: 1
28.04.2015, 12:51 #4
должен быть файл <имя_проекта>.pro - в нем и добавляйте эти строки.
0
fredwriter
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 307
29.04.2015, 02:19  [ТС] #5
У меня в проекте нет файла имя_роекта.pro есть только qt-Debug.pro, qt-Release.pro. Без phonon всё прекрасно компилится.
0
Мотороллер
431 / 242 / 43
Регистрация: 05.08.2013
Сообщений: 1,661
Завершенные тесты: 1
29.04.2015, 20:05 #6
выкладывайте оба
0
fredwriter
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 307
30.04.2015, 02:14  [ТС] #7
qt_Debug.pro
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
# This file is generated automatically. Do not edit.
# Use project properties -> Build -> Qt -> Expert -> Custom Definitions.
TEMPLATE = app
DESTDIR = dist/Debug/GNU_1-Linux-x86
TARGET = QtApplication_2
VERSION = 1.0.0
CONFIG -= debug_and_release app_bundle lib_bundle
CONFIG += debug 
PKGCONFIG +=
QT = core gui widgets
SOURCES += main.cpp
HEADERS += myClass.h
FORMS +=
RESOURCES +=
TRANSLATIONS +=
OBJECTS_DIR = build/Debug/GNU_1-Linux-x86
MOC_DIR = 
RCC_DIR = 
UI_DIR = 
QMAKE_CC = gcc
QMAKE_CXX = g++
DEFINES += 
INCLUDEPATH += 
LIBS +=
qt-Release.pro
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
# This file is generated automatically. Do not edit.
# Use project properties -> Build -> Qt -> Expert -> Custom Definitions.
TEMPLATE = app
DESTDIR = dist/Release/GNU_1-Linux-x86
TARGET = QtApplication_2
VERSION = 1.0.0
CONFIG -= debug_and_release app_bundle lib_bundle
CONFIG += release 
PKGCONFIG +=
QT = core gui widgets
SOURCES += main.cpp
HEADERS += myClass.h
FORMS +=
RESOURCES +=
TRANSLATIONS +=
OBJECTS_DIR = build/Release/GNU_1-Linux-x86
MOC_DIR = 
RCC_DIR = 
UI_DIR = 
QMAKE_CC = gcc
QMAKE_CXX = g++
DEFINES += 
INCLUDEPATH += 
LIBS +=
0
Мотороллер
431 / 242 / 43
Регистрация: 05.08.2013
Сообщений: 1,661
Завершенные тесты: 1
30.04.2015, 09:09 #8
ни хедеры, ни либы не подключены.
0
fredwriter
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 307
30.04.2015, 09:27  [ТС] #9
ни хедеры, ни либы не подключены ТЧК
Я в курсе, что они не подключены, я же пытался их подключить, строки с подключением удаляются почему-то. Подскажите кто-нибудь как их подключить?
0
yarko
64 / 64 / 18
Регистрация: 31.03.2015
Сообщений: 253
30.04.2015, 11:03 #10
Подозреваю, что используете среду NetBeans. Он как раз дописывает подобные хедеры о создателе и времени создания файла в начало.
Вам надо искать не qt_Debug.pro, а <названия проекта>.pro файл и изменять уже его.
0
fredwriter
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 307
30.04.2015, 14:19  [ТС] #11
Да, Вы правы насчет NetBeans, я вроде все папки проекта просмотрел, не нашел я <имя_проекта>.pro. Ну после выходных еще раз посмотрю, но сомневаюсь что что-то найду.
0
yarko
64 / 64 / 18
Регистрация: 31.03.2015
Сообщений: 253
30.04.2015, 14:51 #12
Если нету проектного файла, то что же тогда окрывает среда?
Она по .h/.cpp файлах не поймет что и куда компилить.
qt_Debug.pro и qt_Release.pro как раз и генерируются на базе нужного вам файла.
Смотрите внимательно
0
fredwriter
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 307
05.05.2015, 01:57  [ТС] #13
Обсмотрел все папки проекта раз на 10, не нашел я <имя_проекта>.pro, ну нет его там, не виноват я. Может он где-то в другом месте хранится?
0
yarko
64 / 64 / 18
Регистрация: 31.03.2015
Сообщений: 253
05.05.2015, 12:04 #14
Выложите простой перечень всего что у вас в папке/подпапках проекта есть.
0
fredwriter
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 307
06.05.2015, 02:12  [ТС] #15
Список файлов пректа

myClass.h
moc_myClass.cpp
Makefile
main.cpp
moc_myClass.o
main.o
project.xml
qt-Debug.mk
qt-Debug.pro
qt-Release.pro
Package-Release.bash
Package-Debug.bash
Makefile-variables.mk
Makefile-Release.mk
Makefile-impl.mk
Makefile-Debug.mk
configurations.xml
configurations.xml
launcher.properties
Makefile-variables.mk
private.xml
0
yarko
64 / 64 / 18
Регистрация: 31.03.2015
Сообщений: 253
06.05.2015, 09:59 #16
Лучший ответ Сообщение было отмечено fredwriter как решение

Решение

Если можно - сделайте все это в виде дерева, что б было понятно что в какой подпапке.

Файл configurations.xml. Поищите там что-то подобное <modules> core gui ...</modules>
1
fredwriter
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 307
06.05.2015, 10:51  [ТС] #17
Цитата Сообщение от yarko Посмотреть сообщение
Поищите там что-то подобное <modules> core gui ...</modules>
Есть там такое.

Добавлено через 6 минут
Туда добавить phonon? Я добавил, вроде запустилось, правда без кода с phonon.

Добавлено через 3 минуты
Раскомментировал код с phonon тоже запустилось.

Добавлено через 7 минут
Но ничего при этот не звучит, перенес код:
C++ (Qt)
1
2
3
    QString str("Active.wav");
    mediaO->setCurrentSource(str);
    mediaO->play();
в конструктор, прошелся дебагером, конкретно (надолго) зависает на строчке:
C++ (Qt)
1
    mediaO->setCurrentSource(str);
0
yarko
64 / 64 / 18
Регистрация: 31.03.2015
Сообщений: 253
06.05.2015, 11:15 #18
А если указать полный путь к звукфайлу?
0
fredwriter
7 / 7 / 2
Регистрация: 17.10.2009
Сообщений: 307
07.05.2015, 02:39  [ТС] #19
Полный путь не помог. И еще у меня выдаётся warning на строчке:
C++ (Qt)
1
    mediaO->setCurrentSource(str);
warning: ‘Phonon::MediaSource::MediaSource(const QString&)’ is deprecated (declared at /usr/include/qt4/phonon/mediasource.h:144) [-Wdeprecated-declarations]

Добавлено через 2 минуты
Говорит, что что-то там устарело
0
07.05.2015, 02:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2015, 02:39
Привет! Вот еще темы с решениями:

не находит phonon
привет всем! пользуюсь qt creator 2.7.2 qt 5.1.0... linux mint 15 что нужно...

Phonon в Qt Creator
Ребят ,добрый вечер! Две недели уже мучаюсь с phonon,ничего не выходит. В общем...

спектроанализатор в phonon
Собственно сабж. Взял за основу плеера, плеер из экзампла. Хочу сделать...

SeekSlider в Phonon
Подскажите, как получать позицию SeekSlider'a? Мне нужно контролировать время в...


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

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

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