Qt安装
1. 直接通过命令安装:sudo apt-get install qtcreator
这种安装方式比较方便,比较快,但是使用过程中多多少少会出现一些问题。一般推荐第二种安装方式进行安装。
2. 下载QT安装包安装
Index of /archive/qt
https://download.qt.io/archive/qt/ 推荐Qt5.0以上版本,本人自己下载的是Qt5.9版本,具体安装细节这里不进行详细阐述,根据需求安装即可。
创建Qt功能包
1. 安装依赖
sudo apt-get install ros-melodic-qt-create
sudo apt-get install ros-melodic-qt-build
melodic是我的版本,请根据自己的版本安装。安装完成以后即可通过catkin_create_qt_pkg命令创建ros gui包
2. 创建功能包
① 实例:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
cd ~/catkin_ws/src/
catkin_create_qt_pkg demo01 roscpp rviz
② 创建完成以后通过qtcreator打开QT,文件->打开项目->选择工作空间下的cmakelist.txt(==注意并非功能包下的==)
③ 打开后点击项目: 将build的构建目录改为当前工作空间的build文件夹
④ 然后右键项目->执行cmake: 如果发现报版本不匹配的错误(因为创建的为qt4的版本,这里用的是qt5)

3. 配置cmakelist.txt
① 增加内容
set(CATKIN_INCLUDE_CURRENT_DIR ON)
find_package(Qt5 REQUIRED Core Widgets)
set(QT_LIBRARIES Qt5::Widgets)
② 删除内容
注释调rosbuild_prepare_qt4(QtCore QtGui)
③ 修改内容
QT4_ADD_RESOURCES(QT_RESOURCES_CPP ${QT_RESOURCES})
QT4_WRAP_UI(QT_FORMS_HPP ${QT_FORMS})
QT4_WRAP_CPP(QT_MOC_HPP ${QT_MOC})
改成
QT5_ADD_RESOURCES(QT_RESOURCES_CPP ${QT_RESOURCES})
QT5_WRAP_UI(QT_FORMS_HPP ${QT_FORMS})
QT5_WRAP_CPP(QT_MOC_HPP ${QT_MOC})
配置完成以后再次执行cmake

4. 更改功能包main_window.hpp
由于Q4t中包含QMainWindow在QtGui中,在Qt5中更改为QtWidgets类中,所以需要作更改: ./include/功能包名/main_window.hpp
#include <QtGui/QMainWindow>改为#include <QtWidgets/QMainWindow>
5. 没有ui_main_window.h这个头文件
点击运行出现如下问题:
① 根据路径找到,并打开main_window.hpp,发现文件夹中只有qnode.hpp,缺少了ui_main_window.h文件,
② 找到ui文件夹,并在终端打开执行uic main_window.ui >ui_main_window.h以生成一个ui_main_window.h文件
③ 生成的ui_main_window.h头文件复制到main_window.hpp所在的include文件夹中,现在就可以成功编译了 参考地址:ROS Qt5 librviz人机交互界面开发一(配置QT环境) - 古月居
6. 安装qt5-default
第五步运行后出现 could not find a Qt installation of '' "
解决: sudo apt-get install qt5-default
7. UI界面无法更新
修改ui界面完成后保存,对项目重新构建,然后到ui目录中运行下面的命令
uic main_window.ui >ui_main_window.h && \cp -rf ui_main_window.h ~/catkin_qt/src/功能包名/include/功能包名/
然后重新运行,在即可显示新更新的UI界面
通过上述配置可以通过QT实现ros的人机交互,缺点就是此配置并不是一劳永逸的,每次创建新的功能包都需要重写配置,暂时还没有查阅到好的方法,大家可以在评论区给点建议进行优化。