要求:在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 ,差不多就是這些了。