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

本系列教程文章专栏:

ROS机器人GUI程序开发

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

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

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

文章目录

    • 前言
    • 一,安装该库
    • 二,更改功能包的CmakeList.txt文件
    • 三,代码实现
    • 四,完整项目地址
    • (转载请注明作者和出处:https://blog.csdn.net/qq_38441692 未经允许请勿用于商业用途)

前言

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

这里我主要想实现播放音频的功能,实现返航和设置返航点的语音提示
ROS Qt5 librviz人机交互界面开发九(调用外部Qt库,实现播放音频)_第1张图片
则就需要添加 QMultimedia库

一,安装该库

使用系统命令行安装Multimedia库

sudo apt-get install qtmultimedia5-dev

二,更改功能包的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 未经允许请勿用于商业用途)

你可能感兴趣的:(ROS Qt5 librviz人机交互界面开发九(调用外部Qt库,实现播放音频))