父子QGraphicsItem绘图示例,及与ros中rviz的不同

Posted 可峰科技

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了父子QGraphicsItem绘图示例,及与ros中rviz的不同相关的知识,希望对你有一定的参考价值。

Graphices View中的单位都是像素,米制需要换算成像素。
QGraphicsItem内部绘图的中心是(0,0).可以按照自己的方式绘制。

Graphices View 内部x轴和y轴及原点不清晰的可以先画出来,再调试。x轴正方向向下,y轴正方向向右。

QGraphicsItem父子构成关系,需要子QGraphicsItem调用函数setParentItem来把父QGraphicsItem添加进来。

ros中rviz的坐标系中的x轴是Graphices坐标系中的y轴,
ros中rviz的坐标系中的y轴是Graphices坐标系中的x轴。
所以ros中rviz的坐标系中的绕z轴旋转90度,在Graphices坐标系中应为旋转-90度。

示例代码如下:

    QGraphicsItem *submap_0 = new Submap();
    int row_0 = -10.05/0.05;
    int col_0 = 6.109/0.05;

    submap_0->setPos(col_0,row_0);
    //-36.3315
    submap_0->setRotation(-36.3315);

    QImage image_0 = rpc_handler.GetSubmap(0,0);

    QGraphicsItem *slice_0 = new Slice(image_0);

    slice_0->setPos(-1*31.35/0.05,-1*25.2/0.05);
    slice_0->setParentItem(submap_0);

    scene->addItem(submap_0); //组合添加到场景中

QGraphicsItem的serPos()函数设置图形项在父项中的坐标,如果没有父项,就是在场景(上面代码中scene)中的坐标。

以上是关于父子QGraphicsItem绘图示例,及与ros中rviz的不同的主要内容,如果未能解决你的问题,请参考以下文章

轨迹评估工具使用总结 evo 绘图& ROS map

轨迹评估工具使用总结 evo 绘图& ROS map

使用 QPropretyAnimation 为自定义 QGraphicsItem 设置动画

Graphics View绘图架构

从线程修改 QGraphicsItem 的正确方法?

如何在qt中执行opengl