|
|||||||
Как задавать размеры элементов в QML для разных устройств Android
Время создания: 13.11.2018 19:57
Текстовые метки: qt, qml, android, размер, элемент, интерфейс, резиновый, относительный
Раздел: Компьютер - Программирование - Язык C++ (Си++) - Библиотека Qt - QML
Запись: xintrea/mytetra_syncro/master/base/15421282527i4j5lmppw/text.html на raw.github.com
|
|||||||
|
|||||||
Если детально, то читать вот по этой ссылке статьи снизу-вверх. Если кратко, то вот код: #ifdef Q_OS_ANDROID // BUG with dpi on some androids: https://bugreports.qt-project.org/browse/QTBUG-35701 // Workaround: QAndroidJniObject qtActivity = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;"); QAndroidJniObject resources = qtActivity.callObjectMethod("getResources", "()Landroid/content/res/Resources;"); QAndroidJniObject displayMetrics = resources.callObjectMethod("getDisplayMetrics", "()Landroid/util/DisplayMetrics;"); int density = displayMetrics.getField<int>("densityDpi"); #else QScreen *screen = qApp->primaryScreen(); float density = screen->physicalDotsPerInch(); #endif engine.rootContext()->setContextProperty("mm",density / 25.4); engine.rootContext()->setContextProperty("pt", 1); double scale = density < 180 ? 1 : density < 270 ? 1.5 : density < 360 ? 2 : 3; engine.rootContext()->setContextProperty("dp", scale); Тут размер в миллиметрах полностью надежен, в девайсонезависимых пикселах приблизителен, как и на Android (но надо бы потестить на соответствующих девайсах), pt для единообразия при указании размеров шрифта. Использовать очень просто — умножаем размеры в любом месте QML кода: Rectangle { height: 20*mm; width: 40*dp; } Все собираюсь написать статью по таким базовым вещам, но руки пока не доходят :/ |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|