- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我目前正在使用一个 QGraphicsItem,我正在加载一个像素图来显示一些光栅数据。我目前没有做任何平铺或任何类似的事情,但我已经覆盖了我的 QGraphicsItem,这样我就可以实现诸如在鼠标下缩放、跟踪我悬停的像素等功能。
我从磁盘中取出的文件大小为 1 - 2GB,我想找出一种更优化的方式来显示它们。对于初学者来说——如果我愿意的话,我似乎可以一次显示它们——因为我正在使用的 QImage (Qpixmap->QImage->QgraphicsItem) 似乎在超过 32,xxx(16 位)的任何像素索引处都失败了。
那么如果我想保持使用单个 QGraphicsItem,我应该如何在此处实现平铺?我不认为我想使用多个 QGraphicsItems 来保存显示的数据+要显示的相邻数据“大约”。这将需要我在有人将鼠标悬停并试图缩放单个图 block 时缩放它们,从而导致我也必须重新定位所有内容,对吗?我想这还需要了解从文件中准确获取哪些数据。
然而,我对想法持开放态度。我还认为以某种线程方式执行此操作会很好,这样即使尚未加载所有图 block ,用户也可以继续平移图像或缩放图像。
我查看了 40000 芯片演示,但我不确定这是否是我所追求的 - 看起来它基本上仍然像通常在场景中那样显示所有芯片,只是覆盖了 paint 方法以提供更少详细程度...还是我错过了有关该演示的某些内容?
最佳答案
处理这么大的图像会很困难也就不足为奇了。 Qt 并不是为此而设计的,并且由于特定的操作系统和内存管理方式可能还有其他影响因素。
您显然需要(或者至少应该使用)一种平铺机制。您的主要问题是您需要一种方法来访问您的图像数据,而不涉及使用 QImage
(或 QPixmap
)来加载整个内容并提供对该图像的访问数据,因为已经确定这失败了。
您可能需要找到一种方法(库)来将整个图像加载到内存中并允许您从中提取图像数据区域,或者仅从磁盘上的文件加载特定区域。当试图“缩小”图像的任何部分时,您还需要能够将非常大的区域调整为较低分辨率的部分。不幸的是,我从来没有像这样进行过图像处理,所以我不熟悉可用的库选项,Qt 可能无法直接帮助您。
然而,您可能会探索的一个选项是使用图像编辑包将您的大图像分解成更易于管理的 block 。那么也许类似于芯片演示的 QGraphicsView
解决方案会起作用。
关于c++ - 在 QGraphicsView 中平铺大型 QGraphicsItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6300083/
我总是在使用 QGraphicsScene 坐标系时遇到问题。我的场景创建起来非常简单,如下所示: scene = new QGraphicsScene(this); this->setScene(s
我将描述我的问题。 我有一个选项卡类,大致如下所示: class Tab : public QWidget { public: Tab(); ... private: ... QG
我正在尝试使用 QGraphics 变换矩阵进行平移和缩放。缩放有效,但平移参数 m31 和 m32 无效。看起来还有一个以场景为中心的功能。在下面的代码中,我操纵 rectScene 进行平移,但为
我想做一个 QGraphicsScene并显示在 QGraphicsView .我想通过鼠标中键滚动场景并通过左键选择橡皮筋。但我不知道如何使橡皮筋选择仅通过鼠标左键出现。 这是我的代码: # -*-
我将 QGraphicsView 子类化并在我的布局中显示小部件。在 View 中,我自然有 QGraphicsScene。 我可以很好地检索 QGraphicsScene 大小(即我设置的 2100
我想在我的 (Py)Qt 应用程序中的 QGraphicsView 上实现滚动/平移功能。它应该是这样工作的:用户按下鼠标中键, View 随着用户移动鼠标而滚动(这是一个非常常见的功能)。 我尝试使
我的QGraphicsView项目比其背景图像大很多,但我希望该背景图像仅绘制一次。现在,整个事物都被背景图像填充了多少次,只要有足够的空间即可。 那么,如何强制将背景图像仅绘制到 View 中心一次
我想要一个永远不会自动滚动的 QGraphicsView。 类似:基本上,我的问题与 http://developer.qt.nokia.com/forums/viewthread/2220 相同,但
在我的应用程序中,我添加了添加了像素图的 QGraphicsScene,并且所有内容都在关闭滚动条的情况下在 QGraphicsView 中查看。程序窗口比像素图小,当我按箭头键或移动鼠标滚轮时,像素
我想将声子视频小部件放置到 qgraphicsscene 上,以便我可以覆盖图形等。当我运行以下命令时,我听到声音,但 qgraphicsview 上没有播放视频。我将不胜感激,因为我认为我正在做示例
我有一个带有“ScrollBarAlwaysOff”垂直滚动条策略的 QGraphicsView。问题是,当我调整 View 的大小(通过 QSplitter 或仅通过调整窗口的大小)时, View
我正在 PyQt 中使用 QGraphicsView 构建一个 GUI,它将显示互连项目的大型网络,并且我希望能够叠加一个较小的门户来显示网络的远处部分 - 有点像“画中画” “之类的事情。这本身并不
您好,我有一个 GridLayout,上面有 64 个 GraphicsView(我知道它很多,但这是我目前唯一能想到的方法)。现在,我目前只是在计时器刻度上在这些图形 View 中的每一个上绘制一条
如何将新的矩形附加到 QgraphicView 在此代码中,当单击按钮时创建矩形。但是当我第二次单击按钮时,先前创建的矩形被删除。我需要创建 2 个矩形当我点击按钮 2 次时。当我点击按钮 3 次时创
我有一个 QDialog,它包含几个停靠小部件和一个 QGraphicsView。小部件布局设置为网格,QGraphicsView 大小策略设置为固定在 2 个轴上,并且 QGraphicsView
我有两个关于 QGraphicsView Framework 的问题。 第一个问题是关于一条特殊的线:我想问一下是否可以画一条蛇形线或波浪线(如链接图片中所示)?如果有任何解决方案,我将不胜感激,因为
我的 QGraphicsView 有一些问题。我将 QGraphicsView 子类化以重新定义 paintEvent。我想使用 QGraphicsItem 绘制某种树的节点和 QGraphicsLi
我在根据需要扩展 QWidgets 时遇到了极大的麻烦。这不是我第一次遇到这个问题,上次我通过 hacking 一个大的 sizeHint() 解决了它。这是错误的方法,我真的很想学习正确的方法。 如
我在我的应用程序中使用 QGraphicsScene/QGraphicsView 对。为了我的目的,我将它们分类。生成该对的代码片段如下: itsScene = new QGraphicsScene;
如何让QGraphicsView处理拖放?比如,从某个文件夹中拖出一个图像文件,然后放到 QGraphicsView 中? Windows、QT5.2、C++。 最佳答案 你需要创建一个 QGraph
我是一名优秀的程序员,十分优秀!