0

我将 QGraphicsItem 子类化并重新实现了绘画。
在油漆中,我写了这样的东西来标记项目:

 painter->drawText("Test",10,40);

一段时间后,我认为用单独的项目处理标签可能很有用。所以我写了这样的东西。

QGraphicsTextItem *label = new QGraphicsTextItem("TEST",this);
setPos(10,40);

但是两个“TEST”绘图不会出现在屏幕上的同一位置。我猜差异可能与项目坐标 - 场景坐标有关。我在 QGraphicsItem 界面中尝试了所有 mapFrom... 和 mapTo... 组合,但没有任何进展。我希望图纸出现在屏幕上的同一位置。
我想念什么?

4

1 回答 1

1

我假设您在两种情况下都使用相同的字体大小和类型。如果位置差异非常小,原因可能是 QGraphicTextItem 对其包含的文本使用了一些填充。我会尝试使用不会在内部添加花哨的东西的 QGraphicsSimpleTextItem ,看看你是否仍然有同样的问题。如果您使用painter 或setPost,坐标系是相同的,所以这不是问题。如果这没有帮助,我会建议为两者指定相同的矩形,以避免 Qt 添加它拥有的分隔空间。

于 2010-06-14T08:52:12.783 回答