Qt安卓。获取设备屏幕分辨率

Posted

技术标签:

【中文标题】Qt安卓。获取设备屏幕分辨率【英文标题】:Qt Android. Get device screen resolution 【发布时间】:2014-07-11 19:03:18 【问题描述】:

我正在 android 设备上使用 qt 5.3 进行开发。我无法获得屏幕分辨率。 使用旧的 qt 5 版本,此代码有效:

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

但是现在它不起作用(返回屏幕尺寸 00x00)。还有另一种方法吗?谢谢

【问题讨论】:

【参考方案1】:

Size 保存像素分辨率

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

而availableSize 保存的大小不包括窗口管理器保留区域...

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

有关QScreen 课程的更多信息。

【讨论】:

【参考方案2】:

更多信息,screen 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);

【讨论】:

【参考方案3】:

我发现有几种方法可以获得设备分辨率,每种方法都输出相同的结果,谢天谢地,它适用于 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();

【讨论】:

以上是关于Qt安卓。获取设备屏幕分辨率的主要内容,如果未能解决你的问题,请参考以下文章

如何获得你的安卓设备的屏幕分辨率..? [复制]

安卓获取屏幕分辨率

在qt下获取屏幕分辨率

安卓4.2用adb 获取屏幕分辨率等信息

android获取屏幕的分辨率方法有几种

Android 屏幕适配