在ros中使用qt图形界面

在ROS中使用QT界面

在终端可以直接用catkin_create_qt_pkg命令创建带Qt界面的ROS package,再按照前面说的方法导入到Qt即可
这里参考的是qt_createTutorialsQt App Templates

(1) 要使用catkin_create_qt_pkg命令需要安装一个包,执行如下命令:

$ sudo apt-get install ros-indigo-qt-ros11

这样我就可以使用catkin_create_qt_pkg命令创建一个名为testgui的package

$ cd catkin_qtwstest/src/$ catkin_create_qt_pkg testgui1212

如下图

(2) 按照上述方式重新把catkin_qtwstest工作空间导入到Qt中,如下图

在左侧的树状图可以看到testgui下的目录结构,自动生成的main.cppmain_window.cppqnode.cppmain_window.ui包含Qt界面的基本元素
(3) 要运行testgui节点先启动一个roscore,如图

$ roscore11

然后点击Qt左下角的绿色三角形运行testgui节点,如下图

根据roscore的ROS_MASTER_URI填写UI界面上的ROS_MASTER_URI,然后点击“connect”,testgui节点开始在名为/chatter的topic上发送字符串如图

建立新的多层级窗口

这里首先叙述一下qt中QWidget,QMainWindow,QDialog的区别。

QWidget类是所有用户界面对象的基类。 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己。每一个窗口部件都是矩形的,并且它们按Z轴顺序排列。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。

QMainWindow
类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围

菜单、工具条和一个状态条。QMainWindow常常被继承,因为这使得封装中央部件、菜单和工具条以及窗口状态条变得更容易,当用户点击菜单项或者工具条按钮时,槽会被调用。

QDialog类是对话框窗口的基类。对话框窗口是主要用于短期任务以及和用户进行简要通讯的顶级窗口。QDialog可以是模态对话框也可以是非模态对话框。QDialog支持扩展性并且可以提供返回值。它们可以有默认按钮。QDialog也可以有一个QSizeGrip在它的右下角,使用setSizeGripEnabled()。

QDialog
是最普通的顶级窗口。一个不会被嵌入到父窗口部件的窗口部件叫做顶级窗口部件。通常情况下,顶级窗口部件是有框架和标题栏的窗口(尽管使用了一定的窗口部件标记,创建顶级窗口部件时也可能没有这些装饰。)在Qt中,QMainWindow和不同的QDialog的子类是最普通的顶级窗口。

如果是顶级对话框,那就基于QDialog创建,如果是主窗体,那就基于QMainWindow,如果不确定,或者有可能作为顶级窗体,或有可能嵌入到其他窗体中,则基于QWidget创建。
    当然了,实际中,你还可以基于任何其他部件类来派生。看实际需求了,比如QFrame、QStackedWidget等等。

添加窗体(在同一级目录中)

由于ros的特性,不同package之间是可以利用ros本身的机制进行通信,所以数个窗体是可以放到同一级package中的。

实际工程使用中必定使用多个窗体来对实施工程,所以需要增加图形窗口,这里直接使用QT自带的窗口class类来进行添加。

这里在ros2opencv中添加类facedialog,

1.将.h文件改为.hpp文件,通过系统的文件管理器将各个文件放到相应的目录中,如图

2.在ros2opencv下的CMakeList.txt中add_executable()中添加src/facedialog.cpp变为

add_executable(ros2opencv  src/main.cpp src/main_window.cpp src/qnode.cpp src/facedialog.cpp

${QT_FORMS_HPP} ${QT_MOC_HPP})

3.在main_window.hpp中添加#include "../include/ros2opencv/facedialog.hpp"

因为这里想通过main_window.ui中的按钮来调出faceDialog窗口,所以在main_window.hpp中的public中还要添加faceDialog faceDialogForm;

4.在facedialog.hpp中添加#include "ui_facedialog.h"

5.将facedialog.cpp中的#include "ui_facedialog.h"去除

6.因为文件进行了改动,所以要把文件夹build中所有的东西删除,之后再进行构建。

7.之后的对窗体的操作和qt使用窗体的方式一样。

添加窗体(在不同级目录添加,互相调用,这块想实现的功能未实现)

工程中需要图形窗口处在不同的目录中进行互相调用,如下,在body_detect中添加窗口类bodydialog,

1.同样要先将.h改名为.hpp,之后放到对应的目录中。

2.之后编译会出现如下的报错

QDialog: No such file or directory

这里需要在body_detect中的CMakeList.txt的catkin_package()之后添加

rosbuild_prepare_qt4(QtCore QtGui)

3.编译时出现这样的错误

ui_bodydialog.h: No such file or directory


时间: 2024-12-08 09:48:36

在ros中使用qt图形界面的相关文章

在ROS中使用QT界面

在终端可以直接用catkin_create_qt_pkg命令创建带Qt界面的ROS package,再按照前面说的方法导入到Qt即可 这里参考的是qt_createTutorialsQt App Templates (1) 要使用catkin_create_qt_pkg命令需要安装一个包,执行如下命令: $ sudo apt-get install ros-indigo-qt-ros 这样我就可以使用catkin_create_qt_pkg命令创建一个名为testgui的package $ cd

CentOS设置默认启动命令行(不启动图形界面)

CentOS中如何进入图形界面和文字界面,Linux真正的服务器是不会运行图形化界面的,怎么样才能在不卸载桌面的前提下开机直接进入命令界面呢?(我安装的是CentOS 6.5)下面就简单介绍以下: 一.如果要进入图形界面: 1.首先得安装有图形界面,一般为X-window图形界面. 2.启动linux在终端下输入:startx 即可进入X11的图形操作界面. 二.在图形界面还可以在多个界面中进行切换: 在X-window图形操作界面中按"Alt+Ctrl+功能键Fn n=1~6 "就可

linux 图形界面切换

开机为文本界面,由文本界面切换到图形界面:    方法1:运行命令          #startx , 需要先配置图形界面信息,(暂时不会~) :    方法2:修改/etc/inittab文件中的           id:3:initdefault , 将3改为5 ,重新启动系统:真机环境中,在图形界面和文本界面间切换:    Ctrl+Alt+F(n) , 其中F(n)为F1-F6 ,为6个控制台:    Ctrl+ALT+F7 :虚拟机环境,在图形界面和文本界面间切换:  VMWare

C语言控制台窗体图形界面编程(总结)

本系列文章是笔者通过学习<C语言控制台窗体界面编程(修正版)>而写(关于此文档的很多其它信息请看本系列文章第一篇),旨在让大家更加清晰简洁easy地学习C语言控制台窗体界面的编程. 通过本系列文章我们能够在控制台窗体中制作好看的图形界面,方便了在非TC开发环境中的控制台窗体中进行文本界面和图形界面的设计,有利于向Windows应用程序开发过渡.也能够通过学习这些东西写些好玩的经典游戏比方贪吃蛇,扫雷和俄罗斯方块等. 事实上这些编程技巧并不算是C语言的.事实上,它仅仅只是是通过调用Windows

linux 图形界面的安装

本文内容主要摘自:http://blog.csdn.net/hotday_kevin/article/details/8310054 文中图形的安装和卸载都给了两种方式,貌似是因为都是版本的问题而不同.本人用的是redhat Enterprise 6.4 ,安装和卸载用的都是后一种方式. 1. 显示系统已经安装的组件,和可以安装的组件: #yum grouplist|grep -i "x window" 2. 如果系统安装之初采用最小化安装,没有安装xwindow,那么先安装: #yu

C语言控制台窗口图形界面编程(总结)

<知识分享(来自我的CSDN)>   :http://blog.csdn.net/jzqt_t/article/details/32225195 本系列文章是笔者通过学习<C语言控制台窗口界面编程(修正版)>而写(关于此文档的更多信息请看本系列文章第一篇),旨在让大家更加清晰简洁容易地学习C语言控制台窗口界面的编程. 通过本系列文章我们可以在控制台窗口中制作好看的图形界面,方便了在非TC开发环境中的控制台窗口中进行文本界面和图形界面的设计,有利于向Windows应用程序开发过渡.也

CentOS7怎么安装图形界面

1. 前言 本文主要介绍如何在CentOS7命令行界面中安装Gnome图形界面及相关桌面环境套件. 2. CentOS7图形界面安装指引 # yum groupinstall -y "GNOME Desktop" "Graphical Administration Tools" //安装GNOME桌面. # systemctl set-default graphical.target //设置图形模式为默认界面,即下次开机自动启用图形界面. # start x //

图形界面库Windows Forms MFC WTL WxWidgets Qt GTK 综合比较

图形界面库Windows Forms. MFC.WTL. WxWidgets.Qt.GTK 综合比较见下表: 总结: GTK+主要用在X Window上,整个设计的架构和许多概念和MFC以及一般 Windows 上的程序开发大异其趣,入门门槛较高,而且最主要的特色是,它用不具有物件功能的纯C 语言,模拟物件导向.所以写起来比较复杂艰涩,而且充满大量巨集,使用和除错都不是很容易,但优点则是可以用C,不需C++,如果和Win32 SDK比较,不会难学多少,缺点是不易上手使用,而且文件比较缺,架构又非

Oracle 12cR1 RAC 在VMware Workstation上安装(中)—图形界面安装

Oracle 12cR1 RAC 在VMware Workstation上安装(中)-图形界面安装 1.1  图形界面安装 1.1.1  安装GRID 安装日志:/u01/app/oraInventory/logs/installActions2014-06-05_06-12-27AM.log 首先打开Xmanager - Passive软件,或者直接以grid用户登录虚拟机,在虚拟机里边进行图形界面操作. [[email protected] ~]$ export DISPLAY=192.16