LINUX.ORG.RU

Сообщения OIM

 

Qt 5.6 Получение информации об конфигурации экрана (-ов)

Форум — Development

Добрый день.

Прошу о помощи. Некорректно работает приложение Qt 5.6 в двухмониторной конфигурации (в частности, при запуске на первом мониторе главное меню работает нормально, при запуске на втором оно мертвое). Пытаюсь получить и проинтерпретировать информацию о мониторах/экранах. Для этого добавил в приложение следующий код:

class SvuApplication : public QApplication
{
...
public:
...
static QString desktopInfo();
}; ...

QString SvuApplication::desktopInfo()
{
QString l_info("--- Desktop info ---\n");
QDesktopWidget *l_p_dTop = desktop();

l_info += «Screen(s) count: » + QString().setNum(l_p_dTop->screenCount()) + '\n';
l_info += «Primary screen: » + QString().setNum(l_p_dTop->primaryScreen()) + '\n';
l_info += «Is virtual: » + QString(l_p_dTop->isVirtualDesktop() ? «yes» : «no») + '\n';

for(int i=0; i<l_p_dTop->screenCount(); i++)
{
QRect l_avRect = l_p_dTop->availableGeometry(i),
l_screenRect = l_p_dTop->screenGeometry(i);

QString l_avGeometryStr(" available geometry:(%1,%2,%3,%4) common screen geometry:(%5,%6,%7,%8)");

l_info += «Screen:» + QString().setNum(i) + l_avGeometryStr.arg(l_avRect.x()).arg(l_avRect.y()).arg(l_avRect.width()).arg(l_avRect.height()). arg(l_screenRect.x()).arg(l_screenRect.y()).arg(l_screenRect.width()).arg(l_screenRect.height()) + '\n';
}

return l_info;
}

И далее распечатываем возвращаемую этим методом строку. Вот что получаем...

--- Desktop info ---
Screen(s) count: 2
Primary screen: 0
Is virtual: yes
Screen:0 available geometry:(0,0,1920,986) common screen geometry:(0,0,1920,1080)
Screen:1 available geometry:(0,0,0,0) common screen geometry:(1920,0,1920,1080)

Т.е. - десктоп определяется как виртуальный
- но при этом определяются два экрана
- и самое интересное - у второго экрана (именно того, на котором приложение некорректно работает) доступная геометрия экрана определяется как вырожденный прямоугольник (width = height = 0)

Вопрос. Что можно сделать для того, чтобы система видела оба экрана?

Информация о системе:
opsvu@STRIT2:~$ uname -a
Linux STRIT2 4.2.0-23-generic #28astra39 SMP Tue Mar 1 17:41:12
MSK 2016 x86_64 GNU/Linux

opsvu@STRIT2:~$ lsb_release -a
No LSB modules are available.
Distributor ID: AstraLinuxSE
Description: Astra Linux SE 1.5 (Smolensk)
Release: 1.5
Codename: smolensk

Заранее благодарен за помощь. С уважением

 

OIM
()

RSS подписка на новые темы