标签: qgraphicsscene

如何将QGraphicsScene/View设置为特定的坐标系

我想在多边形中绘制多边形QGraphicsScene但多边形具有纬度/经度位置.在一个equirectangular投影中,坐标来自:

                       ^
                      90
                       |
                       |
-180----------------------------------->180
                       |
                       |
                     -90
Run Code Online (Sandbox Code Playgroud)

如何设置QGraphicsScene/ QGraphicsView到这样的投影?

非常感谢,

卡洛斯.

qt projection qgraphicsview qgraphicsscene

20
推荐指数
1
解决办法
2万
查看次数

在QGraphicsScene类中跟踪鼠标移动

我将QGraphicsScene子类化,并添加方法mouseMoveEvent来处理鼠标移动事件.我在GraphicsView上创建了一个标尺,并使用标尺跟踪鼠标移动.在QGraphicsScene :: mousemoveEvent中,我将expliitely调用标尺小部件的mouseMoveEvent.目的是让标尺知道当前的鼠标位置.

现在,当我移动鼠标时,似乎没有调用QGraphicsScene :: mousemoveEvent.但是,如果我按住鼠标左键并按住按钮移动它,我可以使它工作.这不是我想看到的; 每当我将鼠标放在视图上并移动鼠标时,我都会调用此方法.

有没有解决方法?

qt qgraphicsview qobject qgraphicsscene

19
推荐指数
1
解决办法
2万
查看次数

如何在QGraphicsScene上绘制一个点(在鼠标点击上)?

我有以下代码来设置QGraphicsScene.我希望点击场景并在我点击的位置画一个点.我怎么能这样做?这是我目前的代码:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QGraphicsScene *scene;
    QGraphicsView *view = new QGraphicsView(this);

    view->setGeometry(QRect(20, 50, 400, 400));
    scene = new QGraphicsScene(50, 50, 350, 350);
    view->setScene(scene);
}
Run Code Online (Sandbox Code Playgroud)

c++ qt mouseclick-event qgraphicsscene

16
推荐指数
1
解决办法
3万
查看次数

QGraphics场景中的QImage

我对Qt很新.我在插入QImage场景时遇到了麻烦.有人可以告诉我如何添加QImageQGraphicsScene

qt qimage qgraphicsscene

13
推荐指数
1
解决办法
2万
查看次数

QGraphicsScene,项目坐标会影响性能?

使用下面的代码片段,我创建了一个包含100.000个矩形的场景.
表现很好; 视图没有延迟响应.

QGraphicsScene * scene = new QGraphicsScene;
for (int y = -50000; y < 50000; y++) {
   scene->addRect(0, y * 25, 40, 20);
}
...
view->setScene(scene);
Run Code Online (Sandbox Code Playgroud)

而现在第二个片段很糟糕

for (int y = 0; y < 100000; y++) {
   scene->addRect(0, y * 25, 40, 20);
}
Run Code Online (Sandbox Code Playgroud)

对于场景元素的前半部分,视图延迟响应鼠标和键事件,而另一半看起来似乎没问题?!?

前一场景有sceneRect(x,y,w,h)=(0,-1250000,40,2499995).
后一场景有sceneRect(x,y,w,h)=(0,0,40,2499995).

我不知道为什么sceneRect会影响性能,因为BSP索引是基于相对项目坐标的.

我错过了什么吗?我没有找到关于文档的任何信息,加上Qt演示40000 Chips还在(0,0)周围分发元素,而没有解释该选择的原因.

 // Populate scene
 int xx = 0;
 int nitems = 0;
 for (int i = -11000; i < 11000; i += 110) {
     ++xx;
     int yy …
Run Code Online (Sandbox Code Playgroud)

performance qt qgraphicsscene

13
推荐指数
1
解决办法
1780
查看次数

如何在QPixmap上使用QPainter

我是Qt/Embedded的新手.我想用它QPainter来绘制一个东西QPixmap,它将被添加到QGraphicsScene.这是我的代码.但它没有在像素图上显示图纸.它只显示黑色像素图.

int main(int argc, char **argv) {

  QApplication a(argc, argv);

  QMainWindow *win1 = new QMainWindow();
  win1->resize(500,500);
  win1->show();


  QGraphicsScene *scene = new QGraphicsScene(win1);
  QGraphicsView view(scene, win1);
  view.show();
  view.resize(500,500);

  QPixmap *pix = new QPixmap(500,500);
  scene->addPixmap(*pix);

  QPainter *paint = new QPainter(pix);
  paint->setPen(*(new QColor(255,34,255,255)));
  paint->drawRect(15,15,100,100);

  return a.exec();
}
Run Code Online (Sandbox Code Playgroud)

qt qt4 qpixmap qpainter qgraphicsscene

13
推荐指数
2
解决办法
4万
查看次数

什么是QGraphicsScene :: itemAt()中的qtransform

我创建了一个自定义QGraphicsItem.并覆盖boundingRect()paint().

QRectF myTile::boundingRect() const
{
  return QRectF(xPos*10, yPos*10, 10, 10);
}

void myTile::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
  QRectF rec = boundingRect();
  int gvi = value * 255;
  QColor gv(gvi, gvi, gvi, 255);
  QBrush brush(gv);
  painter->fillRect(rec, brush);
  painter->drawRect(rec);
}
Run Code Online (Sandbox Code Playgroud)

然后我用来addItem()向场景添加一个项目.现在我想通过它的位置从现场得到它.我找到了这个itemAt功能.但问题是我不知道const QTransform&是什么deviceTransform.我该QTransform怎么用?

因为我没有实现任何变换QGraphicsItem.这让我很困惑.

c++ qt qgraphicsitem qgraphicsscene

12
推荐指数
1
解决办法
7173
查看次数

PyQt:试图理解图形场景/视图

我正在尝试理解QGraphicsView和QGraphicsScene,特别是如何放置图形项目并将它们显示在我想要的位置.如果场景大于观看区域,我也会在滚动条出现时感到困惑.

例如,这段代码将在顶角创建一个带有椭圆的小图形视图:

import sys
from PyQt4 import QtGui, QtCore

class MyView(QtGui.QGraphicsView):
    def __init__(self):
        QtGui.QGraphicsView.__init__(self)

        self.scene = QtGui.QGraphicsScene(self)
        self.scene.setSceneRect(QtCore.QRectF(0, 0, 245, 245))

        self.setScene(self.scene)

        self.item = QtGui.QGraphicsEllipseItem(0, 0, 60, 40)
        self.scene.addItem(self.item)


if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    view = MyView()
    view.show()
    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

但是,如果self.scene.setSceneRect(QtCore.QRectF(0, 0, 245, 245))省略,则即使椭圆具有x,y = 0,0,椭圆也会出现在窗口的中间.我不知道为什么!这种行为有原因吗?

同样,当场景大小大于视图时,我对滚动条的外观感到困惑.例如,以下代码创建一个带有多个椭圆的视图/场景,并且itemsBoundingRect大于sceneRect.仅显示了一些省略号,但没有滚动条可以看到隐藏的省略号,您必须增加窗口的大小.但是当你这样做时,椭圆的位置会发生偏移,因此忽略椭圆的x,y.

import sys
from PyQt4 import QtGui, QtCore

class MyView(QtGui.QGraphicsView):
    def __init__(self):
        QtGui.QGraphicsView.__init__(self)

        self.setGeometry(QtCore.QRect(100, 100, 250, 250))

        self.scene = QtGui.QGraphicsScene(self)
        self.scene.setSceneRect(QtCore.QRectF(0, 0, 200, 200))

        self.setScene(self.scene)

        for i …
Run Code Online (Sandbox Code Playgroud)

python pyqt4 qgraphicsview qgraphicsscene

11
推荐指数
1
解决办法
2万
查看次数

这是PyQt 4 python错误还是错误的代码?

以下代码应创建QGraphicsView小部件,该小部件拥有一个QGraphicsScene,其中包含文本:

#!/usr/bin/python

import sys
from PyQt4.QtGui import *


if __name__ == '__main__':
  app = QApplication(sys.argv)

  view = QGraphicsView()  
  scene = QGraphicsScene()

  scene.addText("Hello!")

  view.setScene(scene)
  view.show();

  sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

这将打开窗口,将文本放在那里,但在关闭窗口后 - python转储核心并打印出几个问题:

(python:5387): Gtk-CRITICAL **: IA__gtk_container_add: assertion `GTK_IS_CONTAINER (container)' failed

(python:5387): Gtk-CRITICAL **: IA__gtk_widget_realize: assertion `GTK_WIDGET_ANCHORED (widget) || GTK_IS_INVISIBLE (widget)' failed
...clip...
... above message is shown many, many times ...
...clip...
(python:5387): Gtk-CRITICAL **: IA__gtk_widget_realize: assertion `GTK_WIDGET_ANCHORED (widget) || GTK_IS_INVISIBLE (widget)' failed
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

版本:python2.7 2.7.3-0ubuntu3.1 python-qt4 4.9.1-2ubuntu1

pyqt segmentation-fault pyqt4 python-2.7 qgraphicsscene

11
推荐指数
2
解决办法
6821
查看次数

C++中静态和全局的替代方案?

我有一个类实例需要由其他一些类访问.

  • 将实例始终传递到构造链中会非常麻烦.
  • 我试图避免全局变量,因为人们倾向于反对这一点.
  • 我以为我声明这个实例是一个类的静态成员,然后包含这个类,以便访问该实例,但这不起作用

error: calling a private constructor of class 'Foo'

要在QGraphicsView框架的上下文中进一步指定问题:我想添加QGraphicsItems,它由控制器类(管理项目)实例化到QGraphicsScene,这是(但我不坚持这个细节)我的成员QMainWindow类.

我花了相当多的时间在互联网上搜索,但我相当新,我有点被困在这里.对于解决困境的最佳方法,我表示赞赏.

c++ static global qgraphicsitem qgraphicsscene

11
推荐指数
1
解决办法
1823
查看次数