- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在努力用许多(> 100 万)对象(多边形、线、点)填充 qgraphicsscene。我观察到的是,当随机创建 100000 个多边形时,我已经以 130MB 的内存消耗结束。 (下面的简单示例是基于使用芯片演示示例的 View.cpp 的默认 Qt 项目)
QtGrafikTestBasic::QtGrafikTestBasic(QWidget *parent): QMainWindow(parent)
{
ui.setupUi(this);
QSplitter *h1Splitter = new QSplitter;
QSplitter *vSplitter = new QSplitter;
vSplitter->addWidget(h1Splitter);
View* view = new View("asdf");
h1Splitter->addWidget(view);
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(vSplitter);
setLayout(layout);
setCentralWidget(view);
QBrush *brush = new QBrush();
brush->setColor(Qt::blue);
brush->setStyle(Qt::SolidPattern);
QPen *pen = new QPen();
pen->setWidth(0);
QGraphicsScene *scene = new QGraphicsScene;
srand ( time(NULL) );
int m_PolyWidth = 10;
for (int i = 0 ; i < 100000; i++)
{
double lBaseX = rand() % ((int)floor(width()) - m_PolyWidth);
double lBaseY = rand() % ((int)floor(height()) - m_PolyWidth);
QPolygonF polygon;
polygon << QPointF(lBaseX, lBaseY);
polygon << QPointF(lBaseX + m_PolyWidth, lBaseY);
polygon << QPointF(lBaseX + m_PolyWidth, lBaseY + m_PolyWidth);
polygon << QPointF(lBaseX, lBaseY + m_PolyWidth);
scene->addPolygon(polygon, *pen, *brush);
}
view->view()->setScene(scene);
}
那么我在这里做错了什么/我可以在哪里改进?我已经阅读了一些创建自己的类的帖子,例如芯片示例,所以我只是使用了芯片示例,但我也遇到了一个问题,即一旦我更改了从 统一分配芯片的部分item->setPos(QPointF(i, j));
到一个随机分布 item->setPos(QPointF(lBaseX, lBaseY));
, 内存消耗也在这里爆炸.. .
那么,在 Qt 中绘制多边形、(多边形)线和点的最高性能和最少内存消耗的方法是什么?
最佳答案
当您在图形场景上调用 addPolygon 时,它会创建一个 QGraphicsPolygonItem 并将其添加到场景中。
您添加的每个项目都有各种属性,包括位置、方向、画笔、笔,并允许场景处理碰撞检测。此外,每个项目都将调用其绘制函数,这是一个很大的开销。
这里要做的第一件事是查看使用 QPainterPath 可以获得什么样的性能。创建一个 QPainterPath 并将多边形添加到其中:-
QPainterPath* painterPath = new QPainterPath;
for (int i = 0 ; i < 100000; i++)
{
double lBaseX = rand() % ((int)floor(width()) - m_PolyWidth);
double lBaseY = rand() % ((int)floor(height()) - m_PolyWidth);
QPolygonF polygon;
polygon << QPointF(lBaseX, lBaseY);
polygon << QPointF(lBaseX + m_PolyWidth, lBaseY);
polygon << QPointF(lBaseX + m_PolyWidth, lBaseY + m_PolyWidth);
polygon << QPointF(lBaseX, lBaseY + m_PolyWidth);
painterPath->addPolygon(polygon);
}
如果将 painterPath 添加到派生自 QGraphicsItem 的类,则可以获取 painterPath 以在项目的绘制函数中进行绘制:-
painter.drawPath(painterPath);
这会快得多。只要确保您没有将多边形添加到绘画函数内的画家路径即可。 paint 函数应该不做任何事情,而是渲染项目。
关于c++ - 在 Qt 中绘制多边形、(多边形)线和点时如何改善内存消耗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19925510/
我有一个 recycleView Activity ,这是我应该在设计中展示的内容 我用这段代码来展示它 val arr:ArrayList = arrayListOf("English","
我目前正在运行 Ubuntu 12.04LTS,nginx 发出请求。 我通过谷歌页面速度( https://developers.google.com/speed/pagespeed/insight
我有以下字符串作为键。从下面的代码中,我看到所有的键都指向同一个 reducer ,尽管有很多 reducer 。最后,同一个 reducer 重载。我想,每个键(字符串),去一个不同的 reduce
假设我有一个 flexbox,为了举例,每个元素都包含一个图像。在这种情况下,flexbox 的目的是将它们均匀分布。 看起来很简单。让我们试试吧。 #flex { width: 350px;
我正在从事基于视频车牌检测的项目。 它是这样的: 当我想在车牌上使用 OCR 时,我的问题就出现了。我在一些图片上对其进行了测试,效果非常好。这是一些例子: 但是当我把检测到的盘子放上去时,结果很糟糕
所以我有下面这组代码解析好吃的信息。它以下列格式从 Delicious 页面打印数据 书签 |人数 书签 |人数等等…… 我曾经使用以下方法来查找此信息。 def extract (soup):
我想为组特征(std、mean...)添加一些列,下面的代码有效,但数据集真的很大而且性能很差。有改进代码的好主意吗?谢谢 import pandas as pd df = pd.DataFrame(
我正在使用 new relic 来诊断和修复我们数据库的性能问题。所以我有以下最耗时的查询。 SELECT * FROM `page_view` WHERE `ip_address` = ?s A
我的公司使用 UIWebView 来展示广告。我遇到的问题是初始化 UIWebView 似乎很昂贵;使用 Time Profiler 进行的分析显示 [UIWebView alloc] initWit
如何让下面的代码更优雅?目前我必须手动添加每个条件。有没有一种方法可以检查 $total_points 的值是否位于数组 $ranking_list 的连续项之间? function ym_rank(
g++ 有时会产生相当复杂的输出。特别是在处理模板时。是否有任何工具可以使 g++ 输出更具可读性? ...至少有一些颜色? 在这里问这个问题可能听起来很傻,但我无法通过谷歌搜索。 最佳答案 从 4.
我有一个 API,它登录一个帐户,然后对我想通过 CFHTTP 请求出价的项目执行搜索,如下所示。 搜索.cfm: 登录.cfm:
我有一个包含超过一百万条记录的表,其结构如下: mysql> SELECT * FROM Measurement; +----------------+---------+--------------
使用 trainCascade 训练类似 HAAR 的特征。向社区寻求建议以获得更好的结果。一般来说,什么被认为是好的接受率? 我从一个较小的培训开始,遵循此链接作为指南:http://coding-
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
我们从 JBoss 4(和 JDK 5)升级到 JBoss 5(和 JDK 6)。问题是开始时间已经从 1.5 分钟(在 JBoss 4 上)变为超过 4 分钟。 18:53:35,444 INFO
这是 a previous question on improving rails console loading time 的后续内容。 . 第一个很好的建议是找出 which gems take
我想知道以下哪一项会为加载大量 javascript(jQuery + jQuery UI + 各种其他 javascript 文件)的页面带来更好的性能。我已经浏览了大部分 YSlow 和 Goog
我正在使用多个 setInterval() 例如创建、移动、删除落在屏幕上的字符串 问题是 MODE 1 间隔导致 interval1 出现滞后 我也尝试过切换到MODE 2 STUFF,但仍然出现延
我是一名优秀的程序员,十分优秀!