LINUX.ORG.RU

Qt: Указание размеров элементов формы для Android устройств, как правильно?

 , ,


0

1

Сделал я свое первое приложение для Android - форма и на ней большая кнопка PushButton. Пытаюсь ее сделать более правильного размера задавая свойство styleSheet: padding: Npx

А дальше у меня возникает вопрос, размеры то у разных устройств разные, как сделать что бы она везде имела одинаковую пропорцию?

Я даже попробовал padding: 50% - но в эмуляторе это было мало похоже на 50%.

Как правильно задавать размеры элементов если мне нужно для различных устройств? Это я пытаюсь сделать программу внутреннего пользования в организации.

Правильно с помощью стандартных средств - никак.

Я разработал свою методологию и написал свой графический движок для того, чтобы было понятно для меня. Как и почему.

HIS
()

Да. Получилось весьма своеобразно. Но результаты вполне хороши на мой вкус.

Могу прислать ссылку на мою поделку, которая выглядит вполне не плохо, на мой взгляд, практически на любом устройстве..

HIS
()
Ответ на: комментарий от HIS

Могу прислать ссылку на мою поделку, которая выглядит вполне не плохо, на мой взгляд, практически на любом устройстве..

Было бы интересно посмотреть, конечно если это не монстр в сотню и более килобайт...

victor79
() автор топика
Ответ на: комментарий от victor79

Это ссылка на мою поделку в гугл плей.

Собственно вот: Гипер пятнашки

Сама прога там пару десятков килобайт. Но сопровождение в виде фоток и музыки вылилось в 12 мегабайт.

HIS
()
Ответ на: комментарий от HIS

Собственно вот: Гипер пятнашки
принцип масштабирования могу описать на пальцах.

Так по той ссылке уже скомпилированная установка, мне то нужно понять как делать мне мою прогу.

Но в любом случае, если это делается свой расчет масштабов, то его уже не приткнуть к Qt дизайнеру, и придется формирование форм прописывать в исходниках, что в свою очередь их усложняет и делает менее наглядными. У меня элементов правда не много будет, и в основном это кнопки и поля ввода.

victor79
() автор топика
Ответ на: комментарий от victor79

Я же написал - что разработал свои методологии и как пример дал поглядеть как оно работает.

HIS
()
Ответ на: комментарий от HIS

Это магическая аббревиатура что-то решает с вопросом про пропорции?

Решает.

Во-первых, оно умеет в автоматическое масштабирование в зависимости от разной плотности пикселов, то есть на разных экранах Android девайсов будет примерно один и тот же физический размер.

Во-вторых, если говорить именно о пропорциях, то можно очень легко, например, привязаться к размерам экрана.

CrossFire ★★★★★
()
Ответ на: комментарий от CrossFire

привязаться к размерам экрана.

Как?

масштабирование в зависимости от разной плотности пикселов

Это я вообще считаю бредом в большинстве случаев.

HIS
()
Ответ на: комментарий от CrossFire

К чему это?

Button { width: parent.width / 2 height: parent.height / 2 }

HIS
()
Ответ на: комментарий от HIS

С вами очень трудно вести диалог, всё время меняете тему.

QML лучше виджетов, для Android и сенсорных экранов вообще, как раз тем, что он для этого и создавался, имеет лучшую поддержку таких экранов, в том числе набор готовых контролов для них.

К чему это?

Вы сначала сами спрашиваете, как привязаться к размерам экрана для сохранения пропорций, а потом не помните что было два сообщения назад?

CrossFire ★★★★★
()
Последнее исправление: CrossFire (всего исправлений: 1)
Ответ на: комментарий от CrossFire

Я работаю напрямую с АПИ. Не тумань мне мозг некими виджетами.

в том числе набор готовых контролов для них.

Да c вьюшками я хорошо знаком.

HIS
()
Ответ на: комментарий от HIS

Вы вообще с Qt знакомы, или о чём-то своём рассуждаете? Там всего два общепринятых способа построения интерфейсов — QtWidgets и QtQuick.

Напрямую с API — это велосипеды с рисованием всего и вся на холсте?

CrossFire ★★★★★
()
Ответ на: комментарий от CrossFire

Button {
width: parent.width / 2
height: parent.height / 2
}

Почитал, разобрался.

Вопросик, можно ли в qml файле делать константы, типа:

def_width : width * 9 / 10
и потом делать несколько элементов с использованием этого предопределения?

victor79
() автор топика
Ответ на: комментарий от CrossFire

Все получилось, спасибо. Вопрос вроде как решен.

victor79
() автор топика
Ответ на: комментарий от HIS

Ни о чём тут как раз ты.

Тема была про Qt. Ты начал писать про собственный фреймворк. Это было бы логично, если бы фреймворк был открыт, и ты показывал его преимущества. Но от тебя увидели только ссылку на гиперпятнашки и наезды на тех, кто даёт советы про Qt.

// Против гиперпятнашек как таковых ничего не имею.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

Тема была про Qt.

Ты прав.

Но вопрос в основном про то, как правильно задавать пропорции графических элементов.

Получается так, что есть три «общепринятых» варианта задавать пропорции. Я применяю свой вариант. Он не зависит от размера пикселя (как предлагается за основу в большинстве «путеводителей»)

Я отталкиваюсь от пропорций экрана или от его ширины и/или высоты.

HIS
()
Ответ на: комментарий от HIS

Я отталкиваюсь от пропорций экрана или от его ширины и/или высоты.

Логично. Ну а Crossfire отталкивается от ширины/высоты родительского окна.

P.S. А, в последнем примере у него как раз ApplicationWindow.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от victor79

Я вывожу некоторый коэфициент (для портрет ориентации экрана он у меня вычисляется от ширины) за основу взята ширина 720 пикселей (так исторически сложилось) при которой коэффициент равен 1.

Потом я на этот коэффициент умножаю ширину и высоту всех графических элементов перед отображением. Тоесть я задаю все элементы размером таким, чтобы оно было «симпатишно» при ширине экрана в 720 пикселей. Для всех остальных разрешений идёт умножение на коэффициент.

HIS
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.