首页 > 解决方案 > 在 Mac 上从 QT 获取窗口句柄

问题描述

我正在从 SDL 寻找与此解决方案等效的解决方案,以从 OSX (Mojave) 上的 QT(5.12) 获取窗口句柄

  SDL_SysWMinfo wmInfo = {};
  SDL_GetWindowWMInfo(window, &wmInfo);
  mInfo.info.cocoa.window;

我尝试了一个在堆栈上找到的解决方案

NSWindow* window  = [[NSWindow alloc] initWithContentRect:NSMakeRect(500, 500, 500, 500)
      styleMask:NSTitledWindowMask |  NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask
      backing:NSBackingStoreBuffered
      defer:NO];

但它失败并显示错误消息

expected variable name or this in lambda capture list

我通过 QWidget 尝试过

QWidget window;
window.resize(320, 240);
window.show();
window.winId()
window.windowHandle()

我尝试使用 QMacNativeWidget 但也失败了。

我试图愚弄这个进口

#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>
#import <AppKit/NSWindow.h>

但是 NSWindow.h 会抛出很多错误信息。例如,它抱怨缺少大括号。

因此,我找不到任何对我有帮助的文档,而且我正在按照尝试和错误原则进行工作,这不是最有效的方法^^

也许你们中的一个人已经有同样的问题,可以提供一些帮助或参考

标签: c++macosqtcocoa

解决方案


推荐阅读