QT designer studio 设计ROS界面【入门级】【第一部分·界面搭建】

方案来源和确定

本想只做ros的,突然要做UI就很令人头秃。调研了一些方法,以两种方案为主,一种是在rviz做界面插件的形式优化人机交互体验;另一种是基于qt creator,安装ros_qtc_plugin这个插件,插件说明参考下链接:

https://ros-qtc-plugin.readthedocs.io/en/latest/_source/How-to-Install-Users.html

前一种方案因为一些原因否了,后一种方案又遇到另一个问题。当前的开发环境是ubuntu 20.04,为aarch64架构,因为有意切换到ros2,而且相关的ros包已经开发的比较完善了。该插件仅有14.04/16.04/18.04的成熟版本,至于20.04是开发者版,需要自行根据内核调整环境进行编译,尝试了几天,无果,又碍于时间精力有限放弃了该方法,就又找了一种方案。

  • 先用qt designer studio 搭建好基础界面
  • 然后指定开发环境下支持的qt版本生成相应地python基础工程
  • 并能用pyside库正常运行
  • 然后在工作空间下新建ros包,将python工程移入
  • 解决相关文件依赖性和路径问题
  • 补充ros功能,建立所需各包与UI的联系

准备说明

难度是入门级难度,这里只提开发时最常用到的,掌握了就可以自己搭界面
qml的基础知识

锚定位(比较推荐)、绑定定位,还有几种方法,掌握一种够用。
语法基础,读懂代码,仿写代码就行
基本概念:ID,组件中的button、text、rectangle、positioner、label,信号和槽,定时器
一些必要的视窗(在views中勾选):navigator、projrcts、components、2D/3D、Code、properties,state,进阶的有timeline,curves等

创建项目

创建项目工程
第一次创建选择general,其他大同小异,样式风格看喜好。

基础视窗

基础视窗

左上角是navigator 是一个组件树,显示了组件间的亲子关系(鼠标悬停有少量说明文本)
左边侧中部是组件和资源视窗,将组件框中的组件可以直接拖拽至中部2D视窗进行添加,也可以将其拖入组件树确定亲子关系同时会自动添加至中部视窗
中偏下部是status视窗,有一个base状态,同时可以有多个子状态。选中base状态,在此状态在组件树中添加任意组件后并进行属性更改时,初始时会将更改应用于所有子状态。若在子状态对相应地组件相应属性更改后,该组件在该子状态下以子状态设定的属性为准,此时更改基状态下组件属性不再对子状态下的该组件属性进行更改。打个通俗比方,基状态就像买车时的旗舰车的基础配置,子状态就是该车型的私人定制,可以加配置或者减配置或者更改配置。车刚设计出来时,所有的配置都相同,客户下了订单付钱之后,配置就以该订单为准也就是子状态的设置。
通过子状态的何时响应,可以确定状态间的切换逻辑。点击子状态窗口的最下方的修改,会弹出小窗口,通过简单的逻辑表达式可以设置,例如,**!button1.checked && button2.checked ** 表明当button1没用按下,且button2按下时,会切换至该状态。同时可以在不同的子状态设置所需的可见属性,这样可以在不同的状态显示想要的不同的界面效果。
右侧有两个页面,Code和properties。Code就是代码界面,properties是属性界面。属性界面相当于是模块化编程,勾选好对应的选项后会自动于Code界面按一定顺序生成对应代码,一些常见的功能也可以自己直接在代码列表敲,这样能省下切换properties找属性栏修改属性的时间。建议初学者多对比Code中的代码和组件及属性之间的关系可以加深理解。
了解完以上就可以自己实战一个最质朴的界面了,但是各种特效动画都是没有添加的,如需增加就需要了解更多了。

  • 32
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Qt库、RViz和ROS进行点云显示界面设计是一种常见的做法。Qt是一个功能强大的跨平台界面开发框架,RViz是一个ROS包,用于可视化和分析ROS数据。 首先,我们需要在ROS环境中安装RViz包,并确保系统中安装了Qt库。然后,我们可以使用Qt的创作工具Qt Creator创建一个新的Qt项目。 在Qt Creator中,我们可以使用Qt的图形用户界面设计工具来设计点云显示界面的布局。可以选择合适的窗口大小、放置各种控件,如按钮、滑块和标签等,以及指定它们的位置。还可以设置界面的样式和主题,使其符合我们的需求。 然后,我们需要在Qt项目中引入RViz库,以便能够使用其点云显示功能。在Qt Creator的项目文件中,添加RViz库的依赖项,并将其包含到源代码中。通过RViz提供的接口,可以在界面中加载并显示点云数据。 接下来,要使界面ROS通信,我们需要编写一些代码来连接ROSQt。可以使用ROS的C++或Python API在Qt中订阅和发布ROS消息,从而实现与ROS节点的数据交互。通过订阅ROS节点发布的点云消息,可以将点云数据传递给RViz,并在界面上显示出来。 最后,我们可以将Qt项目构建为可执行文件,并在ROS系统中运行。在启动ROS节点后,打开设计好的界面,即可显示ROS系统中的点云数据。 总的来说,使用Qt库、RViz和ROS进行点云显示界面设计是一种灵活且功能强大的方法。通过合理布局界面、使用RViz的点云显示功能并与ROS进行数据交互,我们可以设计出易于使用且具有良好用户体验的点云显示界面

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值