plugin

Qt在Xcode原生Mac Cocoa应用中使用时的Could not find the Qt platform plugin问题

最近在测试Xcode原生Mac Cocoa GUI应用中直接调用Qt GUI时遇到了一个报错找不到native plugin的问题。先记录下操作系统是:macOS 13.4,Xcode版本是:Version 14.3 (14E222b),Qt版本是:6.8.0。用法是在Xcode中新建一个App,interface选的xib(但应该没关系,因为根本没用任何xcode GUI编辑功能),然后在生成的的代码项目中手动加入各种依赖的Qt Framework,并设置好include,lib,rpath等各种路径。代码也是从网上搜到的很简单的创建Qt空间后,通过winId的方式(这是Qt6新改的,以前的Qt5及旧版本需要使用QMacNativeWidget)挂到NSView下,如下:

1
2
3
4
5
6
7
8
9
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    // Insert code here to initialize your application
    QPushButton* btn = new QPushButton("testtttttttttttt");
    NSView* viewBtn = (__bridge NSView*)((void*)btn->winId());
    [self.window.contentView addSubview:viewBtn];
    btn->show();
    [viewBtn setNeedsDisplay:YES];
    [self.window makeKeyAndOrderFront:self.window];
}

需要注意的是开了ARC后的winId返回到NSView*的cast,c cast,c++ cast直接用都不行,查了半天才找到这种__bridge cast配合强转void*的可行方式。

然后运行,发现了标题中的报错信息:

Continue reading…