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); }