ROS Qt5 librviz人机交互界面开发九(调用外部Qt库,实现播放音频)

本系列教程文章专栏:

ROS机器人GUI程序开发

本系列课程已上线古月学院,欢迎感兴趣的小伙伴订阅:

  1. ROS Qt开发环境搭建以及基础知识介绍
  2. ROS人机交互软件的界面开发
  3. ROS Rviz组件开发方法

在这里插入图片描述
开发交流QQ群: 797497206
完整项目代码:
github

前言

我们知道在原生Qt环境中为qt添加外部库的话直接在pro文件里面添加就行了
但是我们的GUI项目是利用cmakelist.txt进行编译的,因此我们添加外部库时只能在dcmakelist.txt中进行添加

这里我主要想实现播放音频的功能,实现返航和设置返航点的语音提示
在这里插入图片描述
则就需要添加 QMultimedia库

一,安装该库

一般ros中自带一些常见的qt基础库,如果库不存在需要在终端通过命令进行安装,或者将qtcreator的lib库添加到环境变量中:
使用系统命令行安装Multimedia库

sudo apt-get install qtmultimedia5-dev

将qtcreator库添加到环境变量(添加到环境变量如果处理不好会导致库冲突,导致部分ui界面不能正常运行):
qt安装路径需为默认,即为用户的宿主目录,如果安装路径更改了,在下一步配置环境变量中也需要根据自己的实际安装路径进行更改

qt安装路径需为默认,即为用户的宿主目录,如果安装路径更改了,在这里也需要根据自己的实际安装路径进行更改
配置qt环境变量

sudo gedit ~/.bashrc

添加如下(注意将QT_VERSION改为自己实际版本,我这里版本为5.9.9):

# QT
export QT_VERSION=5.9.9
export QTDIR=~/Qt$QT_VERSION/$QT_VERSION/gcc_64
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
# export PATH=$PATH:$QTDIR/bin::$QTDIR/plugins/platforms
export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$QTDIR:$QTDIR/lib/cmake
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins/platforms/

# export QT_DEBUG_PLUGINS=1

二,更改功能包的CmakeList.txt文件

在Qt原生项目中添加外部库是在.pro文件中添加:

QT       += multimedia

则在cmake项目中需要在cmakelist.txt中添加:
在find_package添加Multimedia(首字母改为大写):

find_package(Qt5 REQUIRED Core Widgets Multimedia)

在Set添加Qt5::Multimedia:

set(QT_LIBRARIES Qt5::Widgets Qt5::Multimedia)

添加之后再次右键项目->执行cmake
不出意外的话就编译成功了

三,代码实现

这里我使用的是QSoundEffect,并非QMultimedia(因为此库会出现系统不支持的错误,我索性就直接使用QSound实现)
并且Qsound只支持wav格式的音频:

//刷新返航地点
void MainWindow::slot_set_return_point()
{
    if(media_player!=NULL)
    {
        delete media_player;
        media_player=NULL;
    }
    media_player=new QSoundEffect;
    media_player->setSource(QUrl::fromLocalFile("://media/refresh_return.wav"));
    media_player->play();

}
//返航
void MainWindow::slot_return_point()
{
    if(media_player!=NULL)
    {
        delete media_player;
        media_player=NULL;
    }
    media_player=new QSoundEffect;
    media_player->setSource(QUrl::fromLocalFile("://media/start_return.wav"));
    media_player->play();
}

四,完整项目地址

在我自己学习的过程中目前发现没有相关类似完整开源项目,为了帮助其他人少走弯路,我决定将自己的完整项目开源:
github
创作不易,如果本教程对你有帮助,关注或点个赞吧,或者github标个星哦~~
您的支持就是我最大的动力~

(转载请注明作者和出处:https://blog.csdn.net/qq_38441692 未经允许请勿用于商业用途)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值