Управление несколькими дисплеями - PullRequest
0 голосов
/ 12 июня 2019

Я использую QSplashScreen для отображения заставки для моего приложения QtQuick 2.

 QScreen *screen = QGuiApplication::primaryScreen();
 QRect  screen_geometry = screen->geometry();
 int screen_width = screen_geometry.width();

 QPixmap pixmap("splash.png");
 QSplashScreen splash(pixmap.scaledToWidth(screen_width*0.35,Qt::SmoothTransformation));

screen_width используется для масштабирования изображения.Мой ноутбук подключен к монитору 2K.

Проблема в том, что изображение отображается по-разному для различных «параметров управления дисплеем», таких как

«Только для ПК», «Дублирующийся дисплей» и «Только второй экран».

У меня вопрос, как управлять обоими дисплеями, чтобы изображение хорошо отображалось на обоих дисплеях.

Все, что мне нужно, это отобразить заставку с шириной экрана 35%.На обоих дисплеях он должен отображаться с шириной экрана 35%.

1 Ответ

0 голосов
/ 18 июня 2019

Я не знаю точного решения моей проблемы. Но это то, чем я сейчас занимаюсь.

Для этого мне нужно вторичное изображение высокого разрешения сказать "splash@2x.png"

См .: https://doc.qt.io/qt-5/scalability.html#loading-files-depending-on-platform

 QScreen *screen = QGuiApplication::primaryScreen();
 QRect  screen_geometry = screen->geometry();
 int DPR = static_cast<int>(screen->devicePixelRatio()); // 1 or 2
 int screen_width = screen_geometry.width();

 QString splash_screen_image= "splash.png";

 if(DPR == 2)
 {
    //2K screen connected directly to PC
    splash_screen_image= "splash@2x.png";
    screen_width*=2;
 }

 if(DPR == 1 && screen_width >1920)
 {
    //'Second screen only' selected when laptop is connected to 2K display
    splash_screen_image= "splash@2x.png";
    screen_width*=2;
 }

 if(DPR == 1 && screen_width <=1920)
 {
    //'Duplicate display' or 'PC only' selected when laptop is connected to 2K display
    // or Desktop PC connected to HD monitor
    //Use "splash.png"
 }

 QPixmap pixmap(splash_screen_image);
 QSplashScreen splash(pixmap.scaledToWidth(screen_width*0.35,Qt::SmoothTransformation));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...