2015-07-07 4 views
1

Я переношу приложение из встроенного Qt4 в Qt5. Поэтому мне нужен эквивалент для следующего выражения:Qt5: как определить формат экрана?

QScreen::instance()->pixelFormat() 

QScreen не имеет статическую instance() функции больше, и не дает pixelFormat().

Так что в основном мне нужно определить формат изображения на экране. Мне нужно это как второй аргумент для конструктора QImage.

+0

Может быть, используя крошечную частного API (QPA, 'QPlatformScreen'):' QScreen :: handle() 'then' screenFormat()'. Вам нужно 'QT + = gui-private'. Кстати, вы получаете список экранов через 'QGuiApplication' (' primaryScreen() 'и' screen() '). – peppe

ответ

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(); 
} 
Смежные вопросы