Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt Graphicscene:如何创建新层?_Qt_Graphics - Fatal编程技术网

Qt Graphicscene:如何创建新层?

Qt Graphicscene:如何创建新层?,qt,graphics,Qt,Graphics,我有一个QGraphicsView,显示qgraphicscene。用户可以使用按钮缩放和平移场景。此操作通过QGraphicsView功能实现,如scale()。 现在,我想在它上面画一些透明的像素贴图,它们不会被用户操作转换。如何将它们与图形视图分开放置?您可以将该标志添加到不希望缩放的pixmap项目中 该项忽略继承的转换(即,其位置为 仍定位到其父对象,但父对象或视图旋转、缩放或 剪切变换将被忽略)。这面旗子有助于保持 文本标签项水平且未缩放,因此它们仍将保持不变 如果视图已转换,则可读

我有一个
QGraphicsView
,显示
qgraphicscene
。用户可以使用按钮缩放和平移场景。此操作通过
QGraphicsView
功能实现,如
scale()
。 现在,我想在它上面画一些透明的像素贴图,它们不会被用户操作转换。如何将它们与
图形视图分开放置?

您可以将该标志添加到不希望缩放的pixmap项目中

该项忽略继承的转换(即,其位置为 仍定位到其父对象,但父对象或视图旋转、缩放或 剪切变换将被忽略)。这面旗子有助于保持 文本标签项水平且未缩放,因此它们仍将保持不变 如果视图已转换,则可读。设置后,将显示项目的视图 几何体和场景几何体将分别维护。你必须 调用deviceTransform()映射坐标并检测 看法默认情况下,此标志处于禁用状态。这面旗子是在年引进的 Qt 4.3。注意:设置此标志后,您仍然可以缩放项目本身, 这种尺度变换会影响项目的子项

使用以下功能执行此操作:

pixmapItem->setFlag(QGraphicsItem::ItemIgnoresTransformations);

如果希望在完全独立于场景变换的
QGraphicsView
上绘制某些内容,可以将
QGraphicsView
子类化,并将这些项目作为(覆盖的)
paintEvent
方法的一部分进行绘制

void MyView::paintEvent(QPaintEvent *event) {
  // Call the base paintEvent to do the "normal" stuff.
  QGraphicsView::paintEvent(event);

  // Paint your other stuff. Note that you have to create the QPainter on 
  // the viewport.
  QPainter painter(viewport());
  painter.setBrush(QBrush(Qt::black));
  // ... etc.
}

我喜欢戴夫的回答;对于一个简单的HUD,这将是一个好方法。但是,您可以在不进行子类化和手动绘制的情况下执行类似的操作:只需创建两个场景和两个视图,并将它们放在彼此的顶部,例如放在QGridLayout的同一位置。因此,您有两个完全独立的“层”,正如您所希望的。

此标志不阻止GraphicsView从项目中向外看,例如,EnsureRevisible()。此标志仅在视图缩放时影响项目。没有用于处理场景平移的标志。如果希望对象始终在同一位置可见(此标志除外),则应在每次场景重新绘制时显式调用这些项目的setPos。不幸的是,在滚动视图时它不起作用。它仅适用于使整个视图无效的变换。