LINUX.ORG.RU

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

 


1

1

Добрый день.

Прошу о помощи. Некорректно работает приложение 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 (всего исправлений: 2)

Ответ на: комментарий от I-Love-Microsoft

Прошу прощения. Первый раз пишу здесь. Не знал. Спасибо за напоминание. Воспользовался

OIM
() автор топика

А почему вы пришли со своими вопросами сюда, а не к своим

Distributor ID: AstraLinuxSE

? Или оно себя ведёт также на нормальной системе?

slovazap ★★★★★
()
Ответ на: комментарий от tnodir

В его случае проще попробовать готовый пакет kwindowsystem.

deep-purple ★★★★★
()

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

Пропатчить Qt или оконный менеджер.
availableGeometry вычисляется по _NET_WORKAREA, а оконный менеджер выставляет ее на один экран.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.