Невозможно запустить приложение OSX, созданное с помощью macdeployqt. Отсутствует плагин Cocoa при использовании стиля Fusion

Используя Qt 5.5.0 C ++, я сделал очень простой пример приложения на основе виджетов — просто форма без кнопок, идущая по умолчанию. Если я скомпилирую его и запущу через macdeployqt, а затем запусту приложение из файла dmg, оно будет работать нормально. Однако, если я отредактирую main.cpp и добавлю эту строку в …

QApplication::setStyle(QStyleFactory::create("Fusion"));

…перед QApplication a(argc, argv); линия…

…что, конечно, требует, чтобы мой mainwindow.h имел #include <QtWidgets> линии, затем запустите его через macdeployqt, я получаю следующую ошибку. (На самом деле я получаю сбой, но когда я открываю файл example.app и нахожу двоичный файл в example.app/Contents/MacOS/example и запускаю его, я получаю окно терминала, которое сообщает мне следующее сообщение.)

Не удалось запустить это приложение, так как не удалось найти или загрузить плагин платформы Qt «Какао».

Переустановка приложения может решить проблему.

Ловушка отмены: 6

Так что у него проблемы с поиском плагина для какао. Тем не менее, у меня есть плагин какао в этом пути:

example.app/Contents/PlugIns/platforms/libqcocoa.dylib

Я думаю, мне нужно использовать otool а также install_name_tool команды, чтобы исправить то, что сломалось с macdeployqt, но не знаю, что это за техника.

1

Решение

Некоторые блоги могут упомянуть добавление следующей строки стиля ДО QApplication a(argc, argv); линия:

QApplication :: SetStyle (QStyleFactory :: создать ( «Fusion»));

Если вы сделаете это, Qt 5.5 выдаст ошибку Cocoa, и приложение упадет, когда вы попытаетесь развернуть его через macdeployqt, но не упадет при запуске его в Qt Creator.

Исправить это просто. Блоги не правы — поставьте линию стиля ПОСЛЕ QApplication a(argc, argv); линия, а не до этого. Теперь, когда вы развертываете через macdeployqt, проблема с какао исчезает.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]