我正在尝试检测当前的屏幕分辨率(使用C ++,而不是QML),如下所示:
if (QApplication::devicePixelRatio() > 1) {
}
但是我在第一行收到错误“调用非静态成员函数而没有对象参数”。
如何在c ++中检测devicePixelRatio()?
编辑:这里的投票是什么?
答案 0 :(得分:1)
您需要先QApplication
实例化。
您可以使用全局qApp
指针:http://doc.qt.io/qt-4.8/qapplication.html#qApp
或QCoreApplication的instance()
方法:http://doc.qt.io/qt-4.8/qcoreapplication.html#instance
答案 1 :(得分:-1)
编辑:我更新了示例。谢谢你的评论/提示。
如果您已使用过Qt 5.x,请使用QScreen类查询屏幕属性。如:
#include <QtCore/qdebug.h>
#include <QtGui/qguiapplication.h>
#include <QtGui/qscreen.h>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
foreach(QScreen *screen, app.screens()) {
// Query the name
qDebug() << QString("Name: %1").arg(screen->name());
// Query the devicePixelRatio
qDebug() << QString("DevicePixelRatio: %1").arg(screen->devicePixelRatio());
// Query the Screen resolution
int nWidth = screen->geometry().width();
int nHeight = screen->geometry().height();
qDebug() << QString("Screen-Resolution: %1 x %2").arg(nWidth).arg(nHeight);
}
return app.exec();
}
// Output:
// "Name: \\\\.\\DISPLAY1"
// "DevicePixelRatio: 1"
// "Screen-Resolution: 1920 x 1080"