Russian Qt Forum

Qt => Вопросы новичков => Тема начата: saim от Июль 24, 2014, 18:00



Название: Qt + Android, проблемы с портированием ...
Отправлено: saim от Июль 24, 2014, 18:00
Здравствуйте ! У меня проблемы с портированием приложения desktop на платформу android . Прочитав и пересмотрев видео по qt & android у меня вышло элементарные примеры скомпилировать и запустить на реальном устройстве, когда же дело дошло до решения задачи то я столкнулся с проблемой, а именно когда пытаюсь запустить приложения  (не важно на виртуальном или реальном устройстве ) кроме черного экрана ничего не вижу... Приложение использует след модули qt - core, gui, network, multimedia, и что то вроде сторонней библиотеки spectrum (для визуализации при воспроизведении звуковой дорожки) ..
Помогите с портированием  приложения куда копать , что еще посмотреть , это вообще реально ?

P.S. Заранее спасибо!   


Название: Re: Qt + Android, проблемы с портированием ...
Отправлено: gil9red от Июль 24, 2014, 18:04
Вы наверное и QML использовали? :)


Название: Re: Qt + Android, проблемы с портированием ...
Отправлено: saim от Июль 24, 2014, 18:13
Нет.


Название: Re: Qt + Android, проблемы с портированием ...
Отправлено: kibsoft от Июль 24, 2014, 18:45
Смотрите лог в DDMS во время запуска.


Название: Re: Qt + Android, проблемы с портированием ...
Отправлено: saim от Июль 25, 2014, 12:58
Выяснил в чем проблема .. Приложение запускается на реальном устройстве только после перезагрузки девайса ...
И еще не понятно по поводу того как он преобразует виджеты, они получаются искаженными  ..


Название: Re: Qt + Android, проблемы с портированием ...
Отправлено: saim от Июль 29, 2014, 22:46
Ни кто не сталкивался ?? Может нужно какие-то флаги юзать ?


Название: Re: Qt + Android, проблемы с портированием ...
Отправлено: kibsoft от Июль 30, 2014, 00:45
Что именно искаженное? Можно увидеть скриншоты?


Название: Re: Qt + Android, проблемы с портированием ...
Отправлено: sergek от Июль 30, 2014, 11:09
Ни кто не сталкивался ?? Может нужно какие-то флаги юзать ?
Я сталкивался. Размеры виджетов и шрифты сильно уменьшаются в Andрoid. А что с эти делать, пока не разбирался.
Будет информация - сообщите.


Название: Re: Qt + Android, проблемы с портированием ...
Отправлено: saim от Июль 30, 2014, 11:56
Скриншоти :
1) Desktop, как оно на самом деле есть ..
2) Android, с реального устройства (на виртуальном вижу только черный экран при запуске, а ан реальном устройстве приложение запускается только после перезагрузки ).


Название: Re: Qt + Android, проблемы с портированием ...
Отправлено: Пантер от Июль 30, 2014, 12:23
Шрифт вручную задавал или дефолтный?
Ощущение такое, что шрифта нету на устройстве и он подбирается, но как-то хреново. Еще и dpi другой.


Название: Re: Qt + Android, проблемы с портированием ...
Отправлено: saim от Июль 30, 2014, 12:30
Шрифт MS Shell Dlg 2 , устанавливал на форме ... а с виджетами что , они по идеи должны сами подгоняться ??!


Название: Re: Qt + Android, проблемы с портированием ...
Отправлено: Пантер от Июль 30, 2014, 12:32
Они берут от парента настройку.
Попробуй "Droid Sans"


Название: Re: Qt + Android, проблемы с портированием ...
Отправлено: kibsoft от Июль 30, 2014, 13:27
1) Насколько я знаю, стандартные Android виджеты будут показываться в данной версии Qt только при запуске с Ministro, поэтому у вас они выглядят как на десктопе.
2) Я сам с QtWidgets на Android дела не имел, а только с QML, но могу сказать, что тут не все так просто с масштабированием элементов как на десктопе. Одними лэйаутами тут вряд ли обойдешься и надо смотреть в сторону DP величин. http://developer.android.com/guide/practices/screens_support.html

Я вот так в Java коде определял коэффициент:
Код:
//определяем коээфициент масштабирования
float screenFactor = 0.0f;
        switch (getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) {
        case Configuration.SCREENLAYOUT_SIZE_SMALL:
            screenFactor = 0.75f;
            break;

        case Configuration.SCREENLAYOUT_SIZE_LARGE:
            screenFactor = 1.5f;
            break;

        case Configuration.SCREENLAYOUT_SIZE_XLARGE:
            screenFactor = 2;
            break;

        case Configuration.SCREENLAYOUT_SIZE_NORMAL:
            screenFactor = 1;
            break;

        }
        m_scaleFactor = getResources().getDisplayMetrics().density * screenFactor;

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