gpt4 book ai didi

c++ - 检查焦点是否被鼠标在 mousePressEvent 中按下改变

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:05:33 26 4
gpt4 key购买 nike

我有一个小部件,我想在用户按下鼠标时运行一些功能。但我只想在鼠标按下导致焦点改变时运行它。我尝试了以下方法:

void MyWidget::mousePressEvent(QMouseEvent *event) 
{
if (hasFocus()) // WRONG: I want to check whether the widget had focus before the mouse press, but it does not work, this always returns true
{
//do something for which I need `event.pos()`
}

MyWidgetParent::mousePressEvent(event);
}

但它不起作用。 mousePressEvent() 中的 hasFocus() 始终为真,似乎焦点在调用 mousePressEvent() 之前发生了变化。另一方面,我无法在 focusInEvent 中实现此功能,因为我不知道其中的鼠标 event.pos()

关于如何解决这个问题有什么想法吗?

最佳答案

您可以为 QFocusEvent (focusInEvent) 实现处理程序并检查 reason() 是否为 MouseFocusReason。您可以将其保存在变量中,并在 QMouseEvent 中检查并重置该变量。因此,如果该元素被鼠标聚焦并且您得到一个鼠标事件,那么您知道该鼠标事件导致了焦点更改。

关于c++ - 检查焦点是否被鼠标在 mousePressEvent 中按下改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50976836/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com