gpt4 book ai didi

macos - os X 上的 Cocoa WebView 无需单击并按住鼠标左键即可触发鼠标悬停事件

转载 作者:行者123 更新时间:2023-12-03 17:12:51 25 4
gpt4 key购买 nike

我是 Mac 开发新手,正在尝试使用 QMacCocoaViewContainer 来合并 Cocoa WebView 的使用。我的 View 使用多个 css 和 javascript 文件加载 html 文件,但我遇到的问题是,当用户将鼠标移到 View 上时,不会触发鼠标悬停事件。

我已经确定,如果用户单击并按住鼠标左键并移动鼠标,则会触发事件。我猜测这是一个焦点问题,但尚未成功解决此问题。任何帮助都会很棒

最佳答案

我在SO上发现了类似的问题:Event issue when embed cocoa webview to QT application其中已经勾勒出答案。我可以确认该答案中的解决方案有效,但只是暗示。这是我所做的:

  1. 在您的应用中重新实现 QApplication::macEventFilter()
  2. 通过执行以下操作禁用您的应用程序或仅 QMacNativeCocoaWidget 的 Alien 小部件

    setAttribute(Qt::WA_PaintOnScreen)
  3. 在 macEventFilter() 中,检查事件是否为 MouseMove 事件:

    NSEvent *e = reinterpret_cast<NSEvent *>(event);
    if ([e type] == NSMouseMoved)
  4. 如果是这样,请检查坐标是否在您拥有的 WebView 的范围内,然后将 MouseMoved 通知发布到通知中心:

    [[NSNotificationCenter defaultCenter]
    postNotificationName:@"NSMouseMovedNotification" object:nil
    userInfo:[NSDictionary dictionaryWithObject:e forKey:@"NSEvent"]];

当检查事件的位置是否在您的 WebView 中时,请记住 Cocoa 坐标的原点位于底部,而在 Qt 中 (0, 0) 则位于左上角!

关于macos - os X 上的 Cocoa WebView 无需单击并按住鼠标左键即可触发鼠标悬停事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16191279/

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