我正在开发Android设备上的qt 5.3。我无法获得屏幕分辨率。 使用旧的qt 5版本,此代码有效:
QScreen *screen = QApplication::screens().at(0);
largh=screen->availableGeometry().width();
alt =screen->availableGeometry().height();
但是现在它不起作用(返回屏幕大小00x00)。还有另一种方法吗?感谢
答案 0 :(得分:4)
Size保持像素分辨率
screen->size().width()
screen->size().height();
然而,availableSize保留不包括窗口管理器保留区域的大小...
screen->availableSize().width()
screen->availableSize().height();
有关QScreen课程的更多信息。
答案 1 :(得分:1)
我发现有几种方法可以获得设备分辨率,每种方法都输出相同的结果,并且谢天谢地在Qt支持的所有Os-es中都有效...
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)当然,您可以选择Zeus推荐:
QScreen *screen = QApplication::screens().at(0);
largh=screen->availableSize().width();
alt =screen->availableSize().height();
答案 2 :(得分:1)
有关详细信息,屏幕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);
}