2014-10-25 3 views
2

Я хочу реализовать заявку на iOS. Я использовал Qt 5.3 на Mac. Я хочу определить пользовательский интерфейс в Qt. Я хочу иметь кнопку на *.ui. При нажатии на нее будет открыта библиотека фотографий iOS, после чего пользователь сможет выбрать фотографию. Я знаю, что должен использовать UIImagePickerController.UIImagePickerController in Qt 5.3

Я должен использовать корневой контроллер и показать на нем UIPickerImageController. для этого, мне нужно использовать некоторые внутренние Qt API:

первым, в *.pro:

QT += gui-private 

тогда, в моем *.mm коде получить указатель на контроллер вида корень из Qt приложения:

UIView *view = static_cast<UIView *>(QGuiApplication::platformNativeInterface()->nativeResourceForWindow("uiview",quickView)); 
UIViewController* rootCtrl = [[view window] rootViewController]; 

и теперь я могу показать UIImagePickeController:

[rootCtrl presentViewController:imagePickerController animated:YES completation:nil] 

этот способ получить контроллер корневого представления с QML, решил мою проблему, но я не хочу использовать QML. Есть ли другой способ получить указатель на главный контроллер корневого представления приложения Qt (C++ + Objective-C) без использования QML?

Спасибо!

ответ

2

Вы можете использовать UIApplication и keyWindow свойство:

UIViewController* rootViewController = [[UIApplication sharedApplication].keyWindow rootViewController];