Qt5:如何确定屏幕像素格式?

时间:2015-07-07 11:01:37

标签: qt4 qt5 embedded-linux

我正在将嵌入式Qt4中的应用程序移植到Qt5。因此,我需要以下表达式的等效项:

QScreen::instance()->pixelFormat()

QScreen不再具有静态instance()功能,也不提供pixelFormat()

所以基本上我需要确定屏幕的像素格式。我需要它作为QImage的构造函数的第二个参数。

1 个答案:

答案 0 :(得分:0)

如果以下解决方法无法满足您的需求,请使用:
QPlatformScreen * QScreen::handle() const

解决方法:
也许您可以使用QScreen::depth,然后将其值与正确的QImage::format匹配:

QImage::Format ConvertDepthToFormat(int depth)
{
   QImage::Format format = QImage::Format_Invalid;
   switch (depth)
   {
      case 16:
         format = QImage::Format_RGB16;
         break;

      case 32:
         format = QImage::Format_RGB32;
         break; 
   }
   return format;
}

int main(int argc, char *argv[])
{
    QGuiApplication a(argc, argv);

    int depth = 0;
    foreach (QScreen *screen, QGuiApplication::screens())
    {
       depth = screen->depth();
       qDebug() << "Depth:" << depth << "-bits";
       QImage::Format format = ConvertDepthToFormat(depth);
    }
    return a.exec(); 
}