1

我打算在基于 QT 的应用程序中用 OSX 本机 webkit 替换 QT webkit,我现在所做的是制作一个从 QMacCocoaViewContainer 继承的 QT 控件并在其中嵌入一个可可 web 视图。它可以正确显示页面,但可可网页视图无法接收鼠标移动事件,因此无法显示 js/css 悬停效果。我尝试将其与原生 cocoa 应用程序进行比较,发现可可 web 视图可以从原生 cocoa 应用程序的通知中心获取 NSMouseMovedNotifcation,但 QT 应用程序构建自己的事件循环并使用自己的策略发送事件,没有收到此通知。

谁能告诉我如何解决?任何意见都非常感谢。

QTWebView(QWidget *pparent): QMacCocoaViewContainer(0, pparent)
{
    ...
    xwebview = [[WebView alloc] init];
    setCocoaView(xwebview);
    NSString *urldefault = @"http://www.google.com";
    [[xwebview mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urldefault]]];
    ...
}
4

1 回答 1

0

我遇到了类似的问题,我通过实现 macEvent(EventHandlerCallerRef, EventRef) 函数解决了这个问题。从 eventRef 创建一个 NSEvent

NSEvent* nsEvent = [NSEvent eventWithEventRef:event];

如果事件是 MouseMoved 事件,则将 mouseMoved: 事件发送到 NSView 为 (NSView*)winId() 的 NSView。

我希望这有帮助

于 2013-04-29T13:41:08.600 回答