获取元素是否集中在函数 QGraphicsItem::shape() 中的优雅方法

发布于 2024-11-27 03:03:45 字数 494 浏览 1 评论 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 Code:

QPainterPath QGraphicsItem::shape() const

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

In a graphical qt application,
i can learn if my object that inherits from QGraphicsItem is focused in paint method:

Qt Code:

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
}
}

but i must click it and the shape must change whether it is focused or not.
how can i get if focused information in

Qt Code:

QPainterPath QGraphicsItem::shape() const

method in an appropriate way?
I think to declare a global variable but i do not like this idea.
thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

心舞飞扬 2024-12-04 03:03:45

使用 QGraphicsItem::hasFocus()

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

顺便说一句,如果您希望在聚焦项目时形状发生变化,则需要重写 focusInEvent() 和 focusOutEvent() 并记住在形状变化之前调用prepareGeometryChange()。

Use QGraphicsItem::hasFocus() :

Returns true if this item is active, and it or its focus proxy has
keyboard input focus; otherwise, returns false.

Incidentally, if you want the shape to change when you focus the item, you will need to override focusInEvent() and focusOutEvent() and remember to call prepareGeometryChange() before the shape changes.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文