11得票2回答
当一个QGraphicsItem被选中时,调用的方法是什么?

可能是一个考验性问题,但我找不到答案。我需要知道何时选择了QGraphicsItem。必须有一个被调用的方法。我知道QGraphicsItem::itemChange(),但它被调用得太频繁了。有更好的方法吗?谢谢编辑:使用这个if(change == ItemSelectedChange &...

11得票2回答
C++中替代static和global的方案有哪些?

我有一个类实例需要被其他类访问。 每次通过构造函数传递这个实例会很繁琐。 我试图避免全局变量,因为人们倾向于反对这种做法。 我想将这个实例声明为一个类的静态成员,然后包含该类以便访问该实例,但这也不起作用。 错误:调用 'Foo' 类的私有构造函数 进一步说明问题,在QGraphic...

10得票4回答
自定义边界框形状

我正在使用鼠标点击绘制一条直线。该直线是使用绘图函数绘制的,如下所示:painter->drawLine(start_p, end_p); 线段的边界矩形被定义为:QRectF Line::boundingRect() const { // bounding rectangle fo...

10得票1回答
为什么在销毁QGraphicsItem之前从场景中移除它会更有效率?

根据QGraphicsItem析构函数的文档,“在销毁对象之前,从QGraphicsScene中移除对象会更加高效。”为什么这样做更高效呢?我无法想象这可能产生何种影响。如果这确实有影响,那么QGraphicsItem析构函数难道不应该调用:if (scene() != NULL) s...

10得票3回答
如何拉伸场景以适应图形视图?

我正在使用Qt和C++作为我的开发环境。 在我的用户界面中,我绘制了一个QGraphicsView,然后创建一个场景并添加线条到其中。 我遍历了一个包含5000个点的数组,并绘制连接每个点的线条。 QGraphicsScene *scene = new QGraphicsScene(); Q...

9得票2回答
Qt:使用鼠标将QGraphicsItem(boundingRect())调整为适合QGraphicsScene的大小

我想使用鼠标调整我的QGraphicsItem的boundingRect()大小。 为了实现这个目标,我找到了这个主题。我按照这个主题的思路,成功地将右边、右下角和底部的boundingRect()修改为所需大小。 但是,由于我的项目位置是以boundingRect()的左上角为基准定义的...

9得票2回答
QGraphicsScene中项目的选择

我正在尝试了解如何重新定义在 QGraphicsScene 中选择和转换项目的方式(一旦选择)。例如,改变线的长度,移动线,通过移动其点之一来改变多边形。 我创建了一个 QGraphicsView 的子类,并开始重载它的 mousePressEvent,但似乎选择和移动操作被 QGraphi...

8得票1回答
为什么QGraphicsItem::scenePos()一直返回(0,0)?

我一直在摆弄这段代码: QGraphicsLineItem * anotherLine = this->addLine(50,50, 100, 100); qDebug() << anotherLine->scenePos(); QGraphicsLineItem ...

8得票2回答
运行时检查失败 #0 - ESP的值在函数调用中未正确保存

我创建了一个简单程序,演示了我的Qt应用程序在使用多重继承时出现的运行时错误。继承树如下: QGraphicsItem (abstract) \ QGraphicsLineItem MyInterface (abstract) ...

7得票2回答
QT:qobject_cast出现问题

我已经派生了QGraphicsItem和QGraphicsScene类。我希望项目能够调用scene()方法并获取derivedGraphicsItem *而不是QGraphicsItem *,因此我重新实现了QGraphicsScene::itemAt以返回一个派生指针。 DerivedI...