【发布时间】:2016-12-10 19:55:51
【问题描述】:
如果我有一些画家,一些矩形和一些字符串:
QPainter* pPainter;
//Initializing it
QRectF RectF;
//Initializing it
std::string strText = "Some string";
然后我在一些 QGraphicsItem 对象上使用 Painter 绘制带有文本的矩形,然后我们在场景上绘制它:
pPainter->drawText(RectF, Qt::AlignCenter, strText);
注意:我不能修改上面的代码,只能添加一些东西。
我的目标是在单击矩形后获取该文本。 假设我找到了正确的鼠标点击坐标。
有没有办法使用点击的坐标来获取矩形及其文本?或者也许我应该持有一些这样的矩形列表来处理它们? 我曾考虑过使用 itemAt() 方法,但我无法以这种方式获得矩形。
std::string GetTextByCoordinates(int x, int y)
{
//What to do here?
}
更新: 方法paint用于继承自QGraphicsItem(CustomItem)的类中,并且此类item上有多个文本矩形。
应该从该 CustomItem 对象调用方法“GetTextByCoordinates”。
【问题讨论】:
-
画家用在哪里?在场景事件中还是在项目事件中?如果是第二个,这个项目是提供几个文本矩形还是一个?
-
从哪里调用
GetTextByCoordinates? -
我已经尝试更新了
标签: c++ qt qgraphicsitem qpainter qrect