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安卓。获取设备屏幕分辨率的主要内容,如果未能解决你的问题,请参考以下文章