利用Qt Creator 如何在ROS 项目中从一个界面调用另一个界面?

首先介绍我使用的是Qt Creator 4.4.1,Based on Qt 5.9.1 (GCC 4.9.4, 64 bit),为了方便在qt中开发ROS界面,安装了ros_qtc_plugin 插件(可以参考文章:http://blog.csdn.net/zhangrelay/article/details/52068657有什么问题直接去Levi-Armstrong的github上找,目前网上一些安装教程可能更新不及时,最终安装完的选项可能不完全一样),可以直接新建带界面的ros项目,方便调试。

1.在Qt Creator中新建一个ros的workspace

利用Qt Creator 如何在ROS 项目中从一个界面调用另一个界面?_第1张图片

2.在终端进入ros项目的src目录下,利用命令

catkin_create_qt_pkg test2 roscpp  创建名为test2 的包含Qt界面的ros package,文件目录如下所示:

利用Qt Creator 如何在ROS 项目中从一个界面调用另一个界面?_第2张图片

在ui文件下可以看到ui文件(右边那五个button是自己添加的,默认界面中没有),先添加一个Manual Dialog Control 按钮,用它调出另一个界面

利用Qt Creator 如何在ROS 项目中从一个界面调用另一个界面?_第3张图片

3.在test2 package src目录下新建Qt Designer Form Class界面文件(名为manualdialog),选择dialog(mainwindow也一样)

利用Qt Creator 如何在ROS 项目中从一个界面调用另一个界面?_第4张图片

新建完成后会产生三个文件,manualdialog.h manualdialog.cpp manualdialog.ui,将他们分别移动到对应的文件夹中利用Qt Creator 如何在ROS 项目中从一个界面调用另一个界面?_第5张图片,然后在manualdialog.cpp文件中更改头文件目录

#include "../include/test2/manualdialog.h"
4.最重要的问题是要在CmakeLists文件中做更改

file(GLOB_RECURSE QT_MOC RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} FOLLOW_SYMLINKS include/test2/*.hpp *.h)
//一定要加上*.h 不然找不到manualdilog.h头文件
//如果编译找不到源文件再试试下面这句话,一般不需要
//set(QT_SOURCES src/main.cpp src/qnode.cpp src/main_window.cpp src/manualdialog.cpp )
//在源文件中添加manualdilog.cpp
5.接下来就和非ROS项目中调用一个界面步骤一样了,在manualdialog.ui文件中画出你需要的控件,然后在主界面的Manual Dialog Control上连接信号与槽调用manualdialog.ui界面,如下图所示

利用Qt Creator 如何在ROS 项目中从一个界面调用另一个界面?_第6张图片

第四步是关键,不然老是会出现类没定义,找不到*.o文件之类的错误,当时我就在这上面耗费了好多时间。



你可能感兴趣的:(Qt-ROS)