Блокировка ориентации экрана QML

Мне нужно заблокировать экран для определенной ориентации для android-приложения, которое я делаю. есть ли способ сделать это в QML? Гугл не дал мне никаких ответов.
Я использую Qt 5.2.

2 ответов


Вы можете в основном использовать Screen.orientation свойство только для чтения. Подробнее см. В следующем примере:

http://qt-project.org/doc/qt-5/qtquick-window-screeninfo-qml.html

правильный способ на сегодняшний день-использовать файл манифеста Android для этого, как это сделано разработчиком Qt Android в Digia для его QtHangMan игра что:

<activity android:screenOrientation="portrait" ... 

способ сделать это-

  1. создайте каталог вне источника-Давайте назовем его"шаблоны" (может быть что угодно)
  2. скопируйте AndroidManifest.xml в "шаблоны" от - <path to qt installation>/android_armv7/src/android/templates/AndroidManifest.xml
  3. отредактируйте скопированный AndroidManifext.xml с вашим любимым редактором и изменить ориентацию с"нет данных "to"sensorLandscape" (или что-нибудь еще вы предпочитаете) и сохранить файл.
  4. в файле qmake (*.pro) вашего проекта добавьте следующую строку -

    ANDROID_PACKAGE_SOURCE_DIR = <path to your templates directory> #в случае, если вы добавили каталог один над исходным каталогом,путь к папке "шаблоны"= "../шаблоны"

  5. сборка и запуск. Теперь вы должны увидеть, что ориентация фиксируется на все, что вы указали в пользовательском AndroidManifest.xml-файл

чтобы понять, что на самом деле происходит-вот то в Qt ссылка, ищите ANDROID_PACKAGE_SOURCE_DIR

в случае, если ссылка не работает в будущем, вот соответствующие биты -

" ANDROID_PACKAGE_SOURCE_DIR: эта переменная может использоваться для указания каталог, в который можно вносить дополнения и изменения по умолчанию Шаблон пакета для Android. Инструмент androiddeployqt будет копировать шаблон приложения из Qt в каталог сборки, а затем будет копировать содержимое ANDROID_PACKAGE_SOURCE_DIR поверх это, перезапись всех существующих файлов. Обновление части исходные файлы изменяются автоматически, чтобы отразить другие затем Параметры запускаются в результирующем объединенном пакете. Если ты ... например, хотите сделать оригинальный AndroidManifest.XML для приложение, затем поместить непосредственно в папку, указанную в эта переменная. Вы также можете добавить пользовательские файлы Java в ANDROID_PACKAGE_SOURCE_DIR / src."

QtCreator-4.2.1, Qt-5.8