如果元素集中在函数QGraphicsItem :: shape()中的优雅方式

时间:2011-08-01 15:11:15

标签: qt shape qgraphicsitem

在图形qt应用程序中, 我可以了解继承自QGraphicsItem的对象是否专注于绘制方法:

Qt代码:

void MyQGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *)
{
if (option->state & QStyle::State_HasFocus) {
//if focus some shape

} else {
//if no focus another shape
}
}

但我必须点击它,无论是否聚焦,形状都必须改变。 如果有重点信息,我怎么才能得到

Qt代码:

QPainterPath QGraphicsItem::shape() const

方法以适当的方式? 我想要声明一个全局变量,但我不喜欢这个想法。 谢谢

1 个答案:

答案 0 :(得分:1)

使用QGraphicsItem::hasFocus()

  

如果此项目处于活动状态且它或其焦点代理具有,则返回true   键盘输入焦点;否则,返回false。

顺便说一句,如果您希望在聚焦项目时更改形状,则需要覆盖focusInEvent()和focusOutEvent()并记住在形状更改之前调用prepareGeometryChange()。