文章目录

  • 一,首先安装ros对qt pkg的支持
  • 二,安装qtcreator
  • 三,配置qtcreator
  • 四,更改功能包main_window.hpp
  • 五,运行可执行文件
  本系列课程已上线古月学院,欢迎感兴趣的小伙伴订阅:
  1. ROS Qt开发环境搭建以及基础知识介绍
  2. ROS人机交互软件的界面开发
  3. ROS Rviz组件开发方法
在这里插入图片描述   完整项目代码: github

一,首先安装ros对qt pkg的支持

 
sudo apt-get install ros-melodic-qt-create
sudo apt-get install ros-melodic-qt-build

这样就能通过:catkin_create_qt_pkg命令创建ros gui包了: 在src目录下创建包:

catkin_create_qt_pkg qt_ros_test
 

在这里插入图片描述

二,安装qtcreator

1,方法一:

sudo apt-get install qtcreator
 

安装后直接在命令行执行命令:

qtcretor
 

即可运行 但是这样安装的qt版本比较老,而且我使用的过程中会越用越卡,不推荐这种方式安装

2,方法二:

1,通过官方的安装包安装:

官网下载地址 这里我下载的是: Qt 5.9.9 linux

2,更改安装包的可执行权限

这里替换为自己的安装包名

chmod a+x qt-opensource-linux-x64-xxxx.run
 

3,双击安装包名安装

安装时需要注册下qt账户,并在安装界面登陆

在这里插入图片描述

安装组件选择上Desktop gcc 64-bit

在这里插入图片描述

在这里插入图片描述

4,添加qtcreator到环境变量

sudo nano /usr/bin/qtcreator
 

添加如下内容: QT_HOME更改为自己qt安装路径的bin目录

#!/bin/sh 
export QT_HOME=/home/xxxx/Qtxxx/Tools/QtCreator/bin 
$QT_HOME/qtcreator $*

5,更改可执行权限

sudo chmod a+x /usr/bin/qtcreator
 

6,终端运行

终端输入:

qtcreator
 

即可运行qt

方法三:

如果你是ros melodic版本,上面两个方法可以正常展开项目,但是ros kinetic版本可能不能正常展开。在课程中我也提出你解决方法(新建kit),但是还是可能出现项目不能正常展开的问题,这里可以使用ros-qtc-pluging解决,针对于kinetic版本和melodic版本均适用:   1,下载安装包并安装 首先去ros-qtc官网下载自己系统对应版本的软件(qtcreator): ros-qtc-pluging   在这里插入图片描述   我这里下载的为kinetic离线安装版本:ros-qtc-pluging-kinetic 下载后安装:   在这里插入图片描述   安装后会自动在桌面生成图标,点击即可打开:   2,创建工作空间 此版本的qtcreator并不能像原生qtcreator打开项目,需要先创建工作空间: 文件->new file or project: 选中ros workspace:   在这里插入图片描述   然后workspace path选中自己已有的工作空间目录(注意工作空间需要提前执行catkin_make),name和工作空间名称同名即可,build system选中catkin_make:   在这里插入图片描述   点击下一步即可自动展开:   在这里插入图片描述   同时也会在工作空间目录下自动生成.workspace后缀的文件,打开工作空间即也通过这个文件打开(file->open file or project )   同理也需要配置run路径(选中devel/lib目录下的可执行程序),即可实现点击绿色三角形按钮同时构建并运行:    

三,配置qtcreator

1,打开qtcreator:

qtcreator

文件->打开项目->选择工作空间下的cmakelist.txt(==注意并非功能包下的==)

在这里插入图片描述

打开后点击项目: 将build的构建目录改为当前工作空间的build文件夹:

在这里插入图片描述然后右键项

目->执行cmake: 如果发现报版本不匹配的错误(因为创建的为qt4的版本,这里用的是qt5),则继续往下看2,3步,如果没有直接跳过下面两步:

Found unsuitable Qt version "" from NOTFOUND CMake Error at ros_qt_tests/CMakeLists.txt:36 (QT4_ADD_RESOURCES): Unknown CMake command "QT4_ADD_RESOURCES".
 

2,将功能包的cmakelist.txt进行更改:

更改为如下,注意将cy_robot_monitor更改为自己的功能包名

##############################################################################
# CMake
##############################################################################

cmake_minimum_required(VERSION 2.8.0)
project(cyrobot_monitor)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

##############################################################################
# Catkin
##############################################################################

# qt_build provides the qt cmake glue, roscpp the comms for a default talker
find_package(catkin REQUIRED COMPONENTS rviz roscpp)

find_package(Qt5 REQUIRED Core Widgets)
set(QT_LIBRARIES Qt5::Widgets)
include_directories(${catkin_INCLUDE_DIRS})
# Use this to define what the package will export (e.g. libs, headers).
# Since the default here is to produce only a binary, we don't worry about
# exporting anything. 
catkin_package()

##############################################################################
# Qt Environment
##############################################################################

# this comes from qt_build's qt-ros.cmake which is automatically 
# included via the dependency call in package.xml
#rosbuild_prepare_qt4(QtCore QtGui) # Add the appropriate components to the component list here

##############################################################################
# Sections
##############################################################################

file(GLOB QT_FORMS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ui/*.ui)
file(GLOB QT_RESOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} resources/*.qrc)
file(GLOB_RECURSE QT_MOC RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} FOLLOW_SYMLINKS include/cyrobot_monitor/*.hpp *.h)

QT5_ADD_RESOURCES(QT_RESOURCES_CPP ${QT_RESOURCES})
QT5_WRAP_UI(QT_FORMS_HPP ${QT_FORMS})
QT5_WRAP_CPP(QT_MOC_HPP ${QT_MOC})

##############################################################################
# Sources
##############################################################################

file(GLOB_RECURSE QT_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} FOLLOW_SYMLINKS src/*.cpp)

##############################################################################
# Binaries
##############################################################################

add_executable(cyrobot_monitor ${QT_SOURCES} ${QT_RESOURCES_CPP} ${QT_FORMS_HPP} ${QT_MOC_HPP})
target_link_libraries(cyrobot_monitor ${QT_LIBRARIES} ${catkin_LIBRARIES})
install(TARGETS cyrobot_monitor RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
 

3,功能包的package.xml更改:

注意将cy_robot_monitor更改为自己的功能包名

<?xml version="1.0"?>
<package>
  <name>cyrobot_monitor</name>
  <version>0.1.0</version>
  <description>

     cyrobot_monitor

  </description>
  <maintainer email="chengyangkj@gmail.com">chengyangkj</maintainer>
  <author>chengyangkj</author>
  <license>BSD</license>
  <!-- <url type="bugtracker">https://github.com/stonier/qt_ros/issues</url> -->
  <!-- <url type="repository">https://github.com/stonier/qt_ros</url> -->
  <buildtool_depend>catkin</buildtool_depend>
  <!--build_depend>qt_build</build_depend-->
  <build_depend>roscpp</build_depend>
  <!--build_depend>libqt4-dev</build_depend-->
  <!--run_depend>qt_build</run_depend-->
  <run_depend>roscpp</run_depend>
  <!--run_depend>libqt4-dev</run_depend-->
  <build_depend>roscpp</build_depend>
  <run_depend>roscpp</run_depend>
  <build_depend>rospy</build_depend>
  <run_depend>rospy</run_depend>

<build_depend>rviz</build_depend>
  <run_depend>rviz</run_depend>
  <build_depend>qtbase5-dev</build_depend>
  <run_depend>libqt5-core</run_depend>
  <run_depend>libqt5-gui</run_depend>
  <run_depend>libqt5-widgets</run_depend>

 
</package>
 

4,保存再次执行cmake:

成功:

在这里插入图片描述

四,更改功能包main_window.hpp

由于Q4t中包含QMainWindow在QtGui中,在Qt5中更改为QtWidgets类中,所以需要作更改: ./include/功能包名/main_window.hpp

#include<QtGui/QMainWindow>
 

改为

#include<QtWidgets/QMainWindow>
 

五,运行可执行文件

在项目->run->运行配置 更改要运行的可执行文件名称,并点击绿色三角形运行即可:

在这里插入图片描述