qt编写ros2 GUI项目创建

ubuntu 20.0.4

ros2 版本:foxy

qt版本:5.15.2

主体思路:

        单独创建qt项目和ros2项目,再将qt项目中的文件移动到ros2项目中,最后修改ros2项目的cmakelist文件。

1、创建qt项目

        新建文件夹,在文件夹内创建qt项目(按qt界面操作,一步步创建)

2、创建ros2项目

        新建文件夹,再创建项目,命令如下

        mkdir ros2_ws

        ros2 pkg create --build-type ament_cmake ros2_project

3、规划文件夹

        在ros2_project项目中添加如下文件夹,方便分类管理程序各种文件,

       创建 include文件夹,用于保存.h、.hpp头文件。

        创建ui文件夹,用于保存qt的.ui文件。

        创建resources文件夹,用于存在qt的.qrc文件。

        按上述分类,将qt项目中的相应文件移到ros2_project项目相应文件夹里。

4、修改ros2_project项目中的cmakelist.txt文件

        打开ros2_project项目中的cmakelist.txt文件,并进行如下修改。

        1、增加qt的依赖

                find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)

                find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)

        2、创建正则匹配查找各类文件(上述第3步中创建的各类文件夹相应的文件)

                file(GLOB SOURCE_DIR RELATIVE ${CMAKE_SOURCE_DIR} FOLLOW_SYMLINKS  src/*.cpp)

                file(GLOB UI_DIR RELATIVE ${CMAKE_SOURCE_DIR} FOLLOW_SYMLINKS  ui/*.ui)

                file(GLOB INCLUDE_DIR RELATIVE ${CMAKE_SOURCE_DIR} FOLLOW_SYMLINKS  include/*.h *hpp)

                file(GLOB RESOURCES_DIR RELATIVE ${CMAKE_SOURCE_DIR} FOLLOW_SYMLINKS  resources/*.qrc)

        3、设置qt各类文件的编译(下述中的qt5,需要根据自己的qt版本修改相应版本名)

                qt5_wrap_ui(QT_UI_HPP ${UI_DIR})#{}中的名称要与上面第4.2步file里的名称一致

                qt5_wrap_cpp(QT_MOC_HPP ${SOURCE_DIR})#{}中的名称要与上面第2步file里的名称一致

                qt5_add_resources(QT_RESOURCE_CPP ${RESOURCES_DIR)#{}中的名称要与上面第2步file里的名称一致

        4、增加include文件搜索路径

                include_directories(

                        include/

                        ${CMAKE_CURRENT_BINARARY_DIR}

                )

        5、增加ros2节点编译依赖的定义

                add_executable(${PROJECT_NAME}

                ${ SOURCE_DIR}#4.2和第4.3步中创建的几个变量

                ${ UI_DIR}

                ${INCLUDE_DIR}

                ${RESOURCES_DIR}

                ${QT_UI_HPP}

                ${ QT_MOC_HPP}

                ${QT_RESOURCE_CPP}

        6、增加qt库的连接

                target_link_libraries(${PROJECT_NAME} PRIVATE QT${QT_VERSION_MAJOR}::Widgets)

5、编译

        完成上述修改后,在include文件下进行编译。通过不报错,则说明修改无异常。

cmake_minimum_required(VERSION 3.5)
project(ros2_qt_demo)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值