如何从C ++中检测屏幕分辨率?

时间:2016-08-05 13:40:50

标签: qt

我正在尝试检测当前的屏幕分辨率(使用C ++,而不是QML),如下所示:

if (QApplication::devicePixelRatio() > 1) {

}

但是我在第一行收到错误“调用非静态成员函数而没有对象参数”。

如何在c ++中检测devicePixelRatio()?

编辑:这里的投票是什么?

2 个答案:

答案 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"