草庐IT

QGraphicsview

全部标签

c++ - Qt:实现平移(拖动)的正确方法

QGraphicsview有一个方法setDragMode(ScrollHandDrag)来启用鼠标左键的平移。但我想在单击鼠标滚轮(中间按钮)时启用平移,并创建了以下自定义实现来平移://WithinacustomderivedclassofQGraphicsView//panistruewhenwheelisclickedandfalsewhenreleased//lastPosisdefinedsomewhereelseintheclassvoidGridView::mouseMoveEvent(QMouseEvent*event){if(pan){QPointFcurrentP

c++ - 实现缩放 slider QGraphicsView

我需要在Qt4.x中为QGraphicsView集成一个缩放slider,我有一个类似这样的工作实现:connect(slider,SIGNAL(valueChanged(int)),customGraphicsView,SLOT(setZoomLevel(int));在setZoomLevel的插槽中,我有以下内容voidCustomView::setZoomLevel(intlevel){if(zoomLevel-levelzoomLevel){scale(1+(scaleFactor*(level-zoomLevel)),1+(scaleFactor*(level-zoomLev

c++ - QGraphicsView fitInView 边距

为什么这样:graphics_view->fitInView(scene->sceneRect(),Qt::KeepAspectRatio);没有按预期工作?它没有正确地适合场景,在它周围显示了边距。 最佳答案 原因是这样的:https://bugreports.qt.io/browse/QTBUG-42331-请在qt错误跟踪器上对其进行投票以提高其优先级。简而言之,fitInView具有硬编码边距,这可能会导致各种破坏-最不重要的是现在您会丢失显示区域的几个像素,并且还可能会强制进行不必要的重新缩放。您可以通过基于现有实现重新实

c++ - 你如何在QT中绘制点?

我正在使用QT用C++编写一个应用程序,其中有n个点并计算它的凸包。然而,一旦计算出来,我就不知道如何绘制点和绘制船体的边界。制作菜单按钮等非常简单,但我不确定我是否知道执行此操作的工具。你是怎么做到的? 最佳答案 图形View,addEllipseQGraphicsView可以很好地进行2D绘图,并为您提供多种显示方式的选项。它不像qwt那样专为绘制科学数据而量身定制,但仅用于显示一堆点、几何或动画以及许多其他东西时效果很好。参见Qt的GraphicsViewFramework文档和示例。下面是如何在QGraphicsScene中

C++ Qt QGraphicsView : Remembering the position of scrollbars after reload

图形View中的滚动条存在以下问题。我的应用程序获取一个PDF文件并(以某种方式)从中创建一个QImage。QImage然后转换为QPixmap,用于创建QGraphicsScene并从QGraphicsScene我创建了一个QGraphicsView。QGraphicsView被添加到中央小部件并显示。代码大概是这样的QImageimage;image=loadImage(path);QPixmappixmap;pixmap.convertFromImage(image);scene=newQGraphicsScene(this);scene->addPixmap(pixmap);v

c++ - 如何在 Qt 中实现类似 Google map 的磁贴滚动?

我正在使用Qt/C++并尝试绘制一个大而复杂的QGraphicsScene。一旦我添加了很多对象,平移和缩放就会变得非常慢。(当然,这并不奇怪)。我玩过设备坐标缓存(有助于平移到一个点)和最小视口(viewport)更新等等,但最终对象太多了。我想做的是以某种方式从控制UI异步绘制项目。换句话说,就像Googlemap一样,我想平移和缩放并让绘图尽可能快地跟上,但能够在项目完成绘制之前再次平移。我正在尝试的一种方法是创建两个QGraphicsScenes。一个有实际的对象,但没有附加到QGraphicsView。另一个QGraphicsScene连接到QGraphicsView,但它只

c++ - qgraphicsview 水平滚动总是有一个垂直增量

我已经将QGraphicsView子类化为要在CAD应用程序中使用的自定义Canvas。我已经成功地重新实现了QGraphicsView::wheelEvent以检查控制键的键盘修饰符,如果按下控制键,则进行缩放。当用户按住shift键并使用滚轮时,我正在尝试实现水平滚动。我遇到的问题是水平滚动也总是向上滚动0.279。这不是一个大问题,但非常烦人,它表明还有其他问题。所以,这里是问题:这是实现水平滚动的正确方法吗?如果不是,那是什么?如何消除这个0.279的增量?提前致谢。下面的代码和示例输出voidmyView::zoom(intdelta){doublefactor=pow(1.

c++ - 为 QGraphicsView 小部件设置纯背景颜色

我正在尝试显示一个纯色的小方block。我创建了一个QGraphicsView小部件myGraphicsView并调用:ui->myGraphicsView->setBackgroundBrush(QBrush(Qt::red,Qt::SolidPattern));但它保持白色。我做错了什么? 最佳答案 在绘制任何内容之前,您需要将QGraphicsScene设置为QGraphicsView:ui->myGraphicsView->setScene(myScene); 关于c++-为QG

c++ - Qt QGraphicsView单元测试——如何让鼠标保持在 "pressed"状态?

我有一个相当复杂的QGraphicsView/Scene设置,其中我有具有复杂交互的项目。因此,我想对此进行单元测试,以避免在现有功能中产生错误。对于一个测试,我希望:在场景中的一个项目上按下鼠标向右移动鼠标松开鼠标这将允许我检查该项目是否已被选中、移动了正确的数量以及是否被取消了。但是我发现在发送mouseMove事件后鼠标状态变为“已释放”,这是我的代码:QTest.mousePress(gv.viewport(),Qt.LeftButton,Qt.NoModifier,QPoint(80,80),100)QTest.mouseMove(gv.viewport(),QPoint(8

c++ - 如何强制 QGraphicsView/QGraphicsScene 缩小到最小尺寸

我使用QGraphicsView/QGraphicsScene在Qt中绘图。只要我继续绘制更大的东西,缩放和适合就可以正常工作。但是,当边界矩形尺寸减小时View没有。它只是显示相同(或更大的区域)。在我在View上重新绘制一个较小的场景之前,我调用了以下命令:mpScene->clear();mpScene->setSceneRect(QRectF());mpView->setSceneRect(QRectF());mpView->resetMatrix();mpView->fitInView(this->sceneRect(),Qt::KeepAspectRatio);唉,View