Доступ к NSWindow из приложения на основе C / QT

#c #cocoa #xcode #qt #macos

#c #cocoa #xcode #qt #macos

Вопрос:

У меня есть приложение, написанное на C и использующее QT в качестве фреймворка. Компилятором является gcc, а IDE — QT Creator.

В Mac OS мне нужно, чтобы мое приложение взаимодействовало с пробелами путем доступа к свойству collectionBehavior NSWindow. Таким образом, должен быть своего рода мост от приложения C к NSWindow.

Может ли кто-нибудь дать мне подсказку о том, возможно ли это либо с моей текущей настройкой gcc / qtcreator (что, я думаю, невозможно), либо с помощью xcode?

Ответ №1:

Если вы используете Cocoa Qt (существует 2 версии Qt — Cocoa и Carbon, помните об этом!), вы можете использовать WinID() в классе QWidget для извлечения собственного дескриптора виджета.

В Qt Carbon QWidget::WinID() возвращает HIViewRef, в Qt Cocoa он возвращает NSView. Я предполагаю, что вы можете каким-то образом извлечь NSWindow из NSView

Комментарии:

1. @Dmitry Objective-C работает довольно хорошо. И у @Kamil NSView есть -window метод.