QGraphicsView框架容易忽视的坐标问题-“画布”QgraphicsScene到底放在了哪儿?

在QGraphicsView框架中遇到一个bug,发现添加的图形并未如预期显示。问题在于QGraphicsScene的SceneRect未正确设置。即便设置,图形仍不居中且端点位置异常。通过分析,了解到setSceneRect方法的使用需要注意坐标系统,正确的解决方案是根据视图大小来设置SceneRect,以确保左上角为(0,0)。修改后的代码实现了预期效果。" 113451256,10547156,Redis持久化机制:RDB与AOF详解,"['Redis持久化', '缓存', '数据库', '数据备份', '数据恢复']
摘要由CSDN通过智能技术生成

前言

最近一直使用QGraphicsView框架在我的一个实际项目中,官方文档好多都没说清楚啊,有木有?!文档都翻光了,却还是有好多没明白。
一个令我恼火的bug就是,明明log打出来的每个Item的坐标都是预期的,但为什么最后结果不对呢?
我在视图中添加了一个直线项(QPoint(0,0),QPoint(100,100));
结果却是:
居中显示
有的同行看到可能会一下指出,我没有设置QGraphicsScene的SceneRect,所以所有的元素默认显示。
是的,上面这个例子的确如此,但是即使我们设置了呢,结果却是这样:
好一点的例子
直线项确实不居中了,但是端点也没有在左上角啊!下面,我们就来深入结合例子弄清楚这一些问题。

解决之道

先上demo代码,很简单,

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QGraphicsView>
#include<QGraphicsScene>
#include<QDebug>
namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    void showView();//显示graphicsVie
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值