首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么不能从QVector<QGraphicsItem> addItem到QGraphicsScene?

在Qt中,QVector<QGraphicsItem>是一个动态数组,用于存储QGraphicsItem对象的指针。而QGraphicsScene是一个图形场景,用于管理和呈现图形项。

虽然QVector<QGraphicsItem>可以用来存储QGraphicsItem对象的指针,但是直接使用addItem函数将QGraphicsItem添加到QGraphicsScene可能会导致问题。

这是因为QGraphicsScene对于添加的图形项需要进行管理和布局,并且会在需要的时候自动进行绘制。如果直接将QVector<QGraphicsItem>作为参数传递给addItem函数,QGraphicsScene无法正确识别每个QGraphicsItem对象的类型和位置信息,从而无法进行正确的布局和绘制。

正确的做法是使用循环遍历QVector<QGraphicsItem>中的每个QGraphicsItem对象,然后使用addItem函数逐个将其添加到QGraphicsScene中,例如:

代码语言:txt
复制
QVector<QGraphicsItem*> items; // 假设已经包含了需要添加的QGraphicsItem对象的指针

QGraphicsScene scene;
for (int i = 0; i < items.size(); ++i) {
    scene.addItem(items[i]);
}

这样,QGraphicsScene就能正确管理和布局每个图形项,并能够在需要的时候进行绘制。

注意:以上答案是基于Qt框架的理解,关于云计算和云服务提供商的内容已经在问题要求中说明不能提及。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【QT】图形视图、动画框架

图形视图框架提供了基于图像项模型的模型视图编程方法,主要由场景、视图和图形项这三部分组成,这三部分分别由QGraphicsScene、QGraphicsView、QGraphicsItem这三个类来表示...() //为图形项设置焦点 QGraphicsScene::focusItem() //获取当前获得焦点的图形项 QGraphicsScene::render() //将场景中的一部分渲染到绘图设备上...可连接多个视图到同一个场景来为相同的数据集提供多个视图,视图部件是一个可滚动的区域,提供了一个滚动条来浏览大场景。.../创建矩形图形项 QGraphicsRectItem *item = new QGraphicsRectItem(0,0,100,100); //场景添加图像项 scene.addItem...事件,可通过QGraphicsItem::setAcceptHoverEvents()视图图像项接收悬停事件(默认不接收)。

1.6K30
  • 基于Qt的流程设计器(一)

    一:先来看一下界面的截图: 说明: 拖动节点的时候,与该节点相关的箭头连线也会跟着调整; 用户可以使用鼠标从一个节点拖出一个箭头到另一个节点(鼠标在空白区域点击一下,拖出的箭头消失) 这三个图标,手型图标处于选中状态的时候...用红框框住的为关键代码文件) 其他文件均为辅助代码文件(有些文件中的代码没有用到) 三: CustomView类是我们的绘图面板,这个类继承自QGraphicsView 在这个类的构造函数中,我们创建了他的QGraphicsScene...并设置了它的大小(这也是为什么我们的绘图板有滚动条的原因) 另外需要注意的是QGraphicsScene的坐标原点在中心位置,如下图所示 四: CustomArrow是描述箭头连线的类: 这个类继承自...QGraphicsItem boundingRect是QGraphicsItem的虚函数,必须要实现, 其中1.5是箭头连线的线宽,8是箭头张开后所占的区域宽度 p1是箭头的起始点,p2是箭头结束点...就意味着用户是点击的结束方框,这时要绘制一个箭头了, 当然首先要判断是不是已经存在了同样的箭头,如果存在了,就没必要再绘制了, ScenClickFlag置成true是为了冒泡触发画布的点击事件(后续会讲为什么要允许事件冒泡

    1.8K60

    OpenCV3 和 Qt5 计算机视觉:1~5

    在本章中,我们将介绍以下各章: 如何使用QGraphicsScene在场景上绘制图形 如何使用QGraphicsItem及其子类来管理图形项目 如何使用QGraphicsView查看QGraphicsScene...QGraphicsScene和QGraphicsView都提供了转换彼此适合的位置值的功能。 这些项目或QGraphicsItem子类的实例是QGraphicsScene中包含的项目。...addItem函数仅接受任何QGraphicsItem子类并将其添加到场景中。 我们在前面的示例中也使用了此函数。 addWidget函数可用于将 Qt 小部件添加到场景。...与我们在QGraphicsScene类中看到的类似,QGraphicsItem类还包含许多受保护的虚函数,这些函数可以重新实现,主要用于处理传递到场景项上的各种事件。...与QGraphicsScene和QGraphicsItem类相同,QGraphicsView还提供了许多相同的受保护虚拟成员,可用于进一步扩展视图的功能。

    6K20

    【QT】QT基本图形绘制

    ---- 画笔笔刷风格 画笔风格——Qt::PenStyle 笔帽风格——Qt::PenCapStyle Qt::SquareCap 方形线端,不覆盖线的端点 Qt::FlatCap 方形线端,覆盖线的端点...MiterJoin 两条线相汇形成尖角连接 Qt::RoundJoin两条线相汇形成圆角连接 填充模式——Qt::FillRule Qt::OddEventFill填充规则:从图形中某一点画一条水平线到图形外...Qt::WindingFill填充规则:从图形中某一点画一条水平线到图形外,每个交点外边线方向可能向上、向下、方向相反的相互抵消,若结果不为0表示此点在图形内,若为0则在图形外。...->addItem(tr("RoundedRect"),PaintArea::Rectangle); m_shapeCombox->addItem(tr("Ellipse"),PaintArea...m_penStyleComboBox->itemData(value).toInt()); if(style == Qt::CustomDashLine)//如果是自定义的 { QVector

    1K30

    【Concent杂谈】精确更新策略

    this.firstName = 'JimNew'; this.lastName = 'GreenNew'; } } 注意上文里提到了在变化检测周期内通过浅比较收集变化属性,这也是为什么当成员变量是对象时...redux自身的实现原理,当单一状态树上任何一个数据节点发生改变时,其实所有的高阶组件的订阅回调都会被执行,具体组件该不该更新,回调函数里会浅比较前一刻的状态和后一刻状态来决定当前实例需不要更新,所以这也是为什么...= () => ctx.dispatch('addItem'), // 当然了这里这直接支持调用reducer函数 addItem = () => ctx.moduleReducer.addItem...等特性,concent采取同样的类似思路,给所有需要实现状态管理的组件实例附加ctx属性,在这上面记录了组件定义阶段标识的模块和观察依赖等元数据信息,从而在逻辑层面建立起一套更优的更新调度机制,同时也不破坏...list)下的不同数据的组件时,如果调用方传递的renderKey就是自己的ccUniqueKey, 那么renderKey机制将允许组件修改了sourceList下自己的数据同时也只触发自己渲染,而不触发其他实例的渲染

    1.4K62

    【Qt】HelloWorld程序

    Widget() { delete ui; } 运行~ 2.1 代码解释 QLabel* label = new QLabel(this);,学过C++肯定知道这是在堆上创建一个变量,但是呢为什么构造的时候要加...现说结论:可以不加this,但是不推荐,这个this的作用是给当前的label对象指定一个父对象,这和后续的对象树有关。...这就不得不追述到Qt诞生的时间,Qt诞生于1991年,那时C++还没有形成标准呢,我们所熟知最早的C++标准也是在1998年形成的C++98。...包括但不限制于: QString 字符串 QVector 动态数组 QList 链表 QMap 字典 … 多年以后,C++标准已经形成,但是这些已经引入的Qt自己包装好的容器类,也不可能删除了,自能和现在的标准库容器共存...前端开发也会涉及到类似的对象树(DOM),本质上也是一个树形结构,通过树形结构把界面的各种元素给组织起来。 Qt中也存在类似对象树把各种元素给组织起来。

    4900

    .NET框架设计(常被忽视的C#设计技巧)

    多条件(方法碎片化)调用 9.部分类、部分方法的使用(扩大设计范围) 1.】开篇介绍 本文中的内容都是我无意中发现觉得有必要分享一下的设计经验,没有什么高深的技术,只是平时我们可能会忽视的一些设计技巧;为什么有这种想法是因为之前跟一些同事交流技术的时候会发现很多设计思维被固化了... 75 public bool AddItem(Item item) 76 { 77 if (!...testOrder.SumPrices(2); 49 50 Assert.AreEqual(result, 50.0F); 51 } 52 } 53 } 在以往我基本上不写单元测试的...Order对象的方法而不是其他地方的方法; 所以这里使用扩展方法就可以在不改变对象本身业务逻辑的情况下扩展对象行为;最关键的是扩展方法为后面的链式编程提供了基石;从长远来看DomainModel将会被独立到ThreadProcess...>(); 2 IEnumerable items = apples; 很容易的就可以得到集合的转换,虽然很简单的功能但是在设计上如果运用好的话能大大改变接口的灵活性;你可能会有一个疑问,为什么具体实现

    2K71

    哪些代码设计看似是面向对象,实际是面向过程的?

    实际上,这样的做法我是非常不推荐的。它违反了面向对象编程的封装特性,相当于将面向对象编程风格退化成了面向过程编程风格。我通过下面这个例子来给你解释一下这句话。...对于 items 属性,我们定义了它的 getter 方法和 addItem()方法。代码很简单,理解起来不难。那你有没有发现,这段代码有什么问题呢?...如果你是用类似 C 语言这样的面向过程的编程语言来做开发,那对全局变量、全局方法肯定不陌生,甚至可以说,在代码中到处可见。...仅仅为了代码复用,生硬地抽象出一个父类出来,会影响到代码的可读性。...实际上,只包含静态方法不包含任何属性的 Utils 类,是彻彻底底的面向过程的编程风格。但这并不是说,我们就要杜绝使用 Utils 类了。

    83361

    Reactjs vs. Vuejs

    Vue 升级到2.0之后新增了很多 React 原有的特性,我的理解是 Vue 在这些方面对 React 的肯定和致敬,下面将在几个细节上作对比。 Vue更容易上手 Vue 更容易上手!这是真的吗?...$refs.list.addItem(this.input) } } }) 再看看 React 是怎么做的 class List extends React.Component{...复杂的多,不仅仅是多了 onChange,还有新增和删除的逻辑,都必须在父组件中实现,这样会导致项目中多处调用 List 组件,都必须实现这套相似的逻辑,而这套逻辑在 Vue 中已封装在组件里,这也是为什么利用...细心的同学可能发现了,React也有 ref 属性,它也可以让父组件调用子组件的 api,但实际项目中却很少看到,为什么大家都这么同步一致呢?...我查了一下文档,原来 Facebook 不推荐过度使用 ref Your first inclination may be to use refs to “make things happen” in

    6.5K00

    【精解】EOS TPS 多维实测

    那么具体是为什么,我们通过插件的源码txn_test_gen_plugin.cpp进行分析,我将这一部分内容单独成文,请阅读《【源码解读】EOS测试插件:txn_test_gen_plugin.cpp》...他们敢于直接使用C++ 来编写客户端请求主网来打包、发起请求,最终测试得到一个非常不错的结果,大约可以到200到300,这个结果也是我在众多压测手段中得到的比较理想的结果,包括下面要介绍到的eosjs的方式.../bios-boot-tutorial.py -k -w -b -s -c -t (不部署system合约,因为部署后无法使用create account创建账户。)...转账的核心代码: QVector accounts = AccountManager::instance().listAccounts(); // 通过accounts获得测试账户们...下面直接进入enableTrxpool函数,不张贴了,直接转到核心代码trxpool->start(); 那么我们进入到transactionpool.cpp,start对应run函数,源码如下: void

    2K40

    【万字图文】详解设计模式(下篇)

    适配器让原本接口不兼容的类可以合作无间。...你肯定很气愤,我就是办理入职,为什么什么都需要我自己去办?这个公司也太不正规了吧。...18.1> 定义 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态。...抽象和实现可以独立扩展,不会影响到对方。 对于“具体的抽象类”所做的改变,不会影响到客户。 用途和缺点 适合使用在需要跨越多个平台的图形和窗口系统上。...抽象和实现可以独立扩展,不会影响到对方。 对于“具体的抽象类”所做的改变,不会影响到客户。 缺点 适合使用在需要跨越多个平台的图形和窗口系统上。

    1.1K70

    【刘文彬】【精解】EOS TPS 多维实测

    那么具体是为什么,我们通过插件的源码txn_test_gen_plugin.cpp进行分析,我将这一部分内容单独成文,请阅读《【源码解读】EOS测试插件:txn_test_gen_plugin.cpp》...他们敢于直接使用C++ 来编写客户端请求主网来打包、发起请求,最终测试得到一个非常不错的结果,大约可以到200到300,这个结果也是我在众多压测手段中得到的比较理想的结果,包括下面要介绍到的eosjs的方式.../bios-boot-tutorial.py -k -w -b -s -c -t (不部署system合约,因为部署后无法使用create account创建账户。)...转账的核心代码: QVector accounts = AccountManager::instance().listAccounts(); // 通过accounts获得测试账户们...下面直接进入enableTrxpool函数,不张贴了,直接转到核心代码trxpool->start(); 那么我们进入到transactionpool.cpp,start对应run函数,源码如下: void

    88720
    领券