qt-quick(qml)应用程序无法订阅ros主题

时间:2016-03-14 08:39:02

标签: cmake qmake ros qt-quick catkin

观看下面的视频教程后,

https://youtu.be/NG05o_SV1iw

我可以学习如何从Qt Creator打开catkin项目。" 现在我需要制作Qt-Quick应用程序订阅ros主题。 但是,我不知道如何。关于这个问题的一些事实是:

  • Qt-Quick应用程序使用qmake
  • 编译
  • catkin项目是使用cmake编译的 (*在catkin项目ros主题可以订阅。)

简而言之,请让我知道"如何使用cmake编译qt-quick应用程序。

2 个答案:

答案 0 :(得分:1)

这是一个示例CMakeList.txt文件,可用于在ROS中编译QT应用程序。它用于QT5(ros qt包似乎只支持qt4)

要使它与您的项目一起使用,只需替换您的CMakeList.txt文件并更改所有路径/项目名称:

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

cmake_minimum_required(VERSION 2.8.0)
project(gui)

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

# qt_build provides the qt cmake glue, roscpp the comms for a default talker
find_package(catkin REQUIRED COMPONENTS qt_build roscpp sensor_msgs image_transport)
set(QML_IMPORT_PATH "${QML_IMPORT_PATH};${CATKIN_GLOBAL_LIB_DESTINATION}" )
set(QML_IMPORT_PATH2 "${QML_IMPORT_PATH};${CATKIN_GLOBAL_LIB_DESTINATION}" )
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 ca ll in package.xml
#rosbuild_prepare_qt4(QtCore QtGui QtQml QtQuick) # Add the appropriate components to the component list here
find_package(Qt5 COMPONENTS Core Gui Qml Quick REQUIRED)

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

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

QT5_ADD_RESOURCES(QT_RESOURCES_CPP ${QT_RESOURCES})
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(gui ${QT_SOURCES} ${QT_RESOURCES_CPP} ${QT_FORMS_HPP} ${QT_MOC_HPP})
qt5_use_modules(gui Quick Core)
target_link_libraries(gui ${QT_LIBRARIES} ${catkin_LIBRARIES})
target_include_directories(gui PUBLIC include)
install(TARGETS gui RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})

source article有更详细的解释。但基本上重要的部分是:

find_package(Qt5 COMPONENTS Core Qml Quick REQUIRED)

其中导入Qt5核心,qml和快速组件。如果您不使用qml,则可以安全地删除该部分。您还应该能够在此处添加其他qml组件。

cmake列表中的其他qt5函数确实像在头文件上运行qt5 prepossessor一样。

答案 1 :(得分:0)

如果您尝试连接Qt GUI界面并与ROS通信,您可以查看此ROS Qt包。 它有一个关于如何实现这一目标的教程和模板。它也可以作为项目的起点。

此外,它还附带了一个ros_create_qt_package命令,该命令可以创建Qt GUI和ROS包的模板,因此您只需按照自己的意愿对其进行成本化。

最后,只需要一个普通的catkin_make,所以你不要迷失在所有不同的make命令之间(感谢CMakeLists!)。

干杯,