Russian Qt Forum
Ноябрь 01, 2024, 13:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как под android правильно уйти от фиксированного размера окна?  (Прочитано 5290 раз)
navrocky
Moderator
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« : Январь 04, 2015, 22:32 »

Если мы как обычно делаем:

Код
Javascript
Window {
   width: 1024
   height: 768
}

То под андроид это окно будет так-же занимать 1024x768 вне зависимости от размеров экрана. Если не указывать размер, то под андроид окно растянется на весь экран, но на десктопе оно будет очень маленьким.

Сейчас я в обработчике Component.onCompleted, проверяю Qt.platform.os == "android" и если не оно, то задаю фиксированные размеры окна. Но это кривой костыль на мой взгляд.

Хуже того, под WinRT вообще не понять через Qt.platform.os десктопное приложение это или метро на полный экран..

Вот и вопрос, как это делать правильно?
Записан

Гугль в помощь
NWRUS
Гость
« Ответ #1 : Январь 04, 2015, 22:56 »

Можно через import QtQuick.Window узнать размер экрана. И уже от него плясать.
Но лично мне этот способ не нравится и я делаю так:
Код:
    QScreen *scr = QApplication::screens().at(0);
    m_height = scr->size().height();
    m_width = scr->size().width();
И уже потом подсовываю значения  в QMLе.
Записан
navrocky
Moderator
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #2 : Январь 08, 2015, 02:28 »

Можно через import QtQuick.Window узнать размер экрана. И уже от него плясать.
Но лично мне этот способ не нравится и я делаю так:
Код:
    QScreen *scr = QApplication::screens().at(0);
    m_height = scr->size().height();
    m_width = scr->size().width();
И уже потом подсовываю значения  в QMLе.

Ну на самом деле размер экрана то не проблема узнать - в QtQuick.Window есть объект Screen. Проблема заключается в другом, как мне узнать надо ли отображаться в полном экране или не надо?

Т.е. на десктопе приложение может отображаться как в окне, так и на полный экран и этим управляет пользователь, можно задать какой-то предпочтительный размер окна. А вот под android или в ios, winrt приложения полноэкранные и размер окна лучше вообще не трогать иначе окно не будет тянуться на весь экран.

Смотрел стандартные примеры, там для окошек которые отображаются корректно и там и там не используется Window, а из плюсового кода создается QQuickView и ему выставляется режим SizeRootObjectToView. Но это же блин неудобно... теряется возможность рулить параметрами окна из QML (заголовок, полноэкранность/оконность,  и т.д).
« Последнее редактирование: Январь 08, 2015, 02:33 от navrocky » Записан

Гугль в помощь
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Январь 08, 2015, 10:15 »

Если мы как обычно делаем:

Код
Javascript
Window {
   width: 1024
   height: 768
}

То под андроид это окно будет так-же занимать 1024x768 вне зависимости от размеров экрана

Это какое-то окно второго уровня типа диалога? Если нет, то это странно, потому что не должно оно на Андроид/iOS иметь фиксированные размеры.
Записан
navrocky
Moderator
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #4 : Январь 08, 2015, 22:31 »

Это основное окно QtQuick приложения, оно под андроидом на весь экран и отображается, вот только контент занимает ровно указанный фиксированный размер.
Записан

Гугль в помощь
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #5 : Январь 09, 2015, 11:19 »

Это основное окно QtQuick приложения, оно под андроидом на весь экран и отображается, вот только контент занимает ровно указанный фиксированный размер.

А версия Qt какая? У меня 5.3.2/5.4, никогда такого не видел (такого и не должно быть) ни в эмуляторах ни в телефоне.
Записан
navrocky
Moderator
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #6 : Январь 14, 2015, 20:34 »

Да от версии не зависит. Можете запустить пример Maroon на планшете, например. Там будет игра ровно как указано в maroon.qml 320x480 а всё остально залито белым. Хотя там не Window а Item, но проблемы те же.
Записан

Гугль в помощь
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.198 секунд. Запросов: 23.