0

在图形 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

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

4

1 回答 1

1

使用QGraphicsItem::hasFocus()

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

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

于 2011-08-01T16:30:26.173 回答