Intereting Posts
Для вызова требуется уровень API 23 (текущий минимум равен 14): android.app.Activity # requestPermissions, checkSelfPermission В Android-браузере Android Google Chrome можно настроить безопасное обращение-небезопасное происхождение как безопасное Как разрешить ошибку ANR при вызове камеры? Не удалось выполнить dex: java.nio.BufferOverflowException. Проверьте журнал Eclipse для отслеживания стека Сделать многоязычное андроидное приложение Контроль количества элементов списка ListView в Android Studio Вопросы о шифровании активов приложений Google Play Получить информацию о лицах в новом значке google Play Службы 8.3 Какое имя пакета Android Market или Google Apps При запуске приложения для Android я получаю ошибку ADB Java.lang.NullPointerException: попытка получить длину нулевого массива Активность просочилась в окно com.android.internal.policy.impl.PhoneWindow$DecorView@44f72ff0, которое было первоначально добавлено здесь Правильно ли реализована реализация привязки SSL для Android и почему эта ошибка появляется в логарифме? Azure push notification hub – как обрабатывать форматы полезных данных для iOS и Android? Как открыть экран сканирования «zxing Barcode» в маленьком окне?

Qt Android. Получить разрешение экрана устройства

Я развиваю в qt 5.3 на устройстве Android. Я не могу получить разрешение экрана. С старой версией qt 5 этот код работал:

QScreen *screen = QApplication::screens().at(0); largh=screen->availableGeometry().width(); alt =screen->availableGeometry().height(); 

Однако теперь он не работает (возвращает размер экрана 00×00). Есть ли другой способ сделать это? благодаря

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

 screen->size().width() screen->size().height(); 

Принимая во внимание, что availableSize имеет размер, исключающий зарезервированные области оконного менеджера …

 screen->availableSize().width() screen->availableSize().height(); 

Дополнительная информация о классе QScreen .

Я обнаружил, что есть несколько способов получить разрешение устройства, каждый из которых дает те же результаты и, к счастью, работает во всех ОС, поддерживаемых Qt …

1) Моим любимым является написать статическую функцию с помощью QDesktopWidget в ссылочном классе и использовать ее во всем коде:

 QRect const CGenericWidget::getScreenSize() { //Note: one might implement caching of the value to optimize processing speed. This however will result in erros if screen resolution is resized during execution QDesktopWidget scr; return scr.availableGeometry(scr.primaryScreen()); } 

Затем вы можете просто вызвать через свой код такую ​​функцию:

 qDebug() << CGenericWidget::getScreenSize(); 

Он вернет вам объект QRect const, который вы можете использовать для получения размера экрана без верхних и нижних баров.

2) Еще один способ получить разрешение экрана, которое отлично работает, если ваше приложение полноэкранное:

 QWidget *activeWindow = QApplication::activeWindow(); m_sw = activeWindow->width(); m_sh = activeWindow->height(); 

3) И, конечно же, у вас есть выбор, который рекомендовал Зевс:

 QScreen *screen = QApplication::screens().at(0); largh=screen->availableSize().width(); alt =screen->availableSize().height(); 

Для получения дополнительной информации, экран availableSize не готов в самом начале, поэтому вам нужно подождать, вот код:

 Widget::Widget(QWidget *parent){ ... QScreen *screen = QApplication::screens().at(0); connect(screen, SIGNAL(virtualGeometryChanged(QRect)), this,SLOT(getScreen(QRect))); } void Widget::getScreen(QRect rect) { int screenY = screen->availableSize().height(); int screenX = screen->availableSize().width(); this->setGeometry(0,0,screenX,screenY); }