rcv*_*rcv 7 c++ qt qt4 qgraphicsview qgraphicsitem
我有一个QGraphicsScene充满了QGraphicsItems,用户可以平移和缩放以检查所有各种QGraphicsItems.但是,我希望 QGraphicsTextItem标签始终位于屏幕的左上角.我可以忽略变焦很容易,setFlags(QGraphicsItem::ItemIgnoresTransformations)但我还没弄明白如何强迫位置保持在左上角.什么是让我的标签"浮动"在同一个地方的最佳方法?
我认为唯一(可行)的方法是每帧重新计算文本项的位置.为此,只需子类化QGraphicsView,覆盖paintEvent并使用QGraphicsView :: mapToScene()来计算新位置.就像是:
void MyGraphicsView::paintEvent(QPaintEvent*)
{
QPointF scenePos = mapToScene(0,0); // map viewport's top-left corner to scene
m_textItem->setPos(scenePos);
}
Run Code Online (Sandbox Code Playgroud)
我已经多次这样做了,而且效果很好.
当然,你可以在他的回答中创建像Arnold Spence一样的正常QLabel.但是,这在许多情况下都不起作用(例如,如果您确实要将标签放在图形视图的顶部,并且您正在使用OpenGL加速的视口).
| 归档时间: |
|
| 查看次数: |
2130 次 |
| 最近记录: |