Russian Qt Forum
Ноябрь 23, 2024, 12:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено]Как "распахнуть" виджет сразу на два монитора?  (Прочитано 4574 раз)
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« : Январь 13, 2015, 23:12 »

Всем доброго времени.

Я ни разу не сталкивался с этой задачей: Имею два монитора подключенных к видяхе в режиме "виртуальный рабочий стол",
т.е. когда второй монитор является продолжением первого монитора.

Необходимо: При запуске QML приложения сделать так, чтобы виджет главного окна автоматом распахивался/разворачивался
на все доступное пространство (т.е. начинался на первом мониторе, а заканчивался на втором).

Что-то не найду примерчиков.. Никто не сталкивался с этим?

« Последнее редактирование: Январь 14, 2015, 11:56 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #1 : Январь 14, 2015, 00:21 »

думаю поместить виджет в 0,0 а размер посчитать как сумма из QDesktopWidget::availableGeometry() для каждого экрана
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Январь 14, 2015, 09:27 »

(0, 0) - левый верхний угол "главного" монитора. Пробежаться по всем и найти минимальный x (или y) который может быть отрицательным
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #3 : Январь 14, 2015, 11:35 »

Да, это понятно что нужно использовать QDesktopWidget., но непонятно как "протащить" его в QML.

Например при создании пустого Qt Quick проекта (на QtQuick v2.4 - последнего), QtCreator создает шаблон
в котором используется QQmlApplicationEngine, которое не является виджетом, поэтому в ней никак не получится использовать
QDesktopWidget.

Поэтому его нужно как-то использовать в классе QtQuick.Window.. ? Но как?
Записан

ArchLinux x86_64 / Win10 64 bit
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #4 : Январь 14, 2015, 11:42 »

А ты дергай C++ функции из Qml. В C++ части посчитаешь позиционирование. Раз 5ый Qt используй QScreen. На маке это работать не будет, там позиционирование по другому считается походу :-)
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #5 : Январь 14, 2015, 11:53 »

Не, решил так-то так (на Windows):

Код
C++ (Qt)
#include <QApplication>
#include <QDesktopWidget>
#include <QQuickView>
 
int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
   QQuickView view;
   view.setSource(QUrl(QStringLiteral("qrc:/main.qml")));
   view.showFullScreen();
 
   const QDesktopWidget *desktop = QApplication::desktop();
   if (desktop->isVirtualDesktop())
       view.resize(desktop->width(), desktop->height());
 
   return app.exec();
}
 
Записан

ArchLinux x86_64 / Win10 64 bit
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.069 секунд. Запросов: 23.