要求:在ROS项目文件中添加qt界面类,点击按钮播放音频文件。
1. 首先添加qt界面类,包含.ui .h .cpp文件,不再详述,基本操作
2. 在界面中添加放声音的按钮,以便触发函数,我是添加的tabwidget,需要切换几个页面,添加阅读播放声音的按钮
这没啥好写的,都是基本的qt操作,不是我表达的重点。今天调试还算顺利,下面简答阐述一下有点坑的地方。
(1)播放音频对象
tabwidget有好几个page调用播放音频的函数
在头文件里面声明私有变量
private:
QMediaPlayer *player;
在界面类的构造函数里面new个对象
ui->setupUi(this);
player = new QMediaPlayer
然后调用播放函数
void IntroduceDialog::Playvideo(QString filepath)
{
player->setMedia(QUrl::fromLocalFile(filepath));
player->setVolume (50);
player->play();
}
在遇到界面切换信号时需要将音频暂停掉,免得重音
void IntroduceDialog::on_tabWidget_currentChanged(int index)
{
player->pause();
}
(2) 编译运行
在pro的qt文件里是直接加一行
QT += core gui multimedia
在ros项目里有CMakeLists.txt 和packagexml
首先在CMakeLists文件添加qt库
find_package(Qt5 REQUIRED Core Widgets SerialPort Multimedia)#added
set(QT_LIBRARIES Qt5::Widgets Qt5::SerialPort Qt5::Multimedia)#added
在此之前你需要安装multimedia模块以及libqt5multimedia5-plugins
sudo apt-get install qt57multimedia
sudo apt-get install libqt5multimedia5-plugins
在package.xml中添加
<build_depend>libqt5multimedia5-plugins</build_depend>
如果没有这个编译没有问题,运行时就会出现以下错误
defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer"
OK ,差不多就是这些了。