Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [qt] вывод на несколько мониторов |
Автор: gordmiand 22.7.2010, 23:13 | ||
Есть 2 монитора с независимыми друг от друга рабочими столами (без использования опции TwinView (единый раб. стол)). При загрузке приложения необходимо загрузить одну его форму во весь экран1 (верхний дисплей), а другую форму – на весь экран2 (нижний дисплей)…как это оптимальнее и изящнее всего сделать? Я в свое время пробовал так
Но не уверен, что это сработает (на данный момент нет возможности это проверить)… Но это с привязкой к разрешениями мониторов (1280x1024) – типа я прошу вывести мне форму Form1 например размером 100х100 в координаты (0,0) и раскрываю ее на весь экран, а затем – форму Form2 размером 100х100 в координаты (0, например 1025) – типа ниже формы Form1 в надежде, что у обоих мониторов единый “пиксельный размер…а вот если это не так, то как такую задачку решить без привязки к текущим разрешениям мониторов? |
Автор: pilotnet 23.7.2010, 12:41 |
Глянь QDesktopWidget |
Автор: gordmiand 23.7.2010, 13:52 |
pilotnet: дайте пож-та примерчик, а то я не совем понял по-английски что именно из этого класса и как надо использовать... задача - вывести разные формы одного приложения на независимые друг от друга рабочие столы двух мониторов (каждую форму во весь экран (showFullScreen))... |
Автор: pilotnet 26.7.2010, 08:18 |
QRect screenres = QApplication::desktop()->screenGeometry(screenNumber); widget->move(QPoint(screenres.x(), screenres.y())); |
Автор: gordmiand 29.7.2010, 22:10 | ||
pilotnet: то есть я могу написать:
и тогда при загрузке приложения форма Form1 будет во весь экран1, а форма2 - во весь экран2 или нет? если нет, то тогда как это сделать правильно (просто в данный момент нет возможности проверить вышеприведенный мой код на 2 мониторах)? |
Автор: gordmiand 2.8.2010, 18:33 | ||
пробовал так: (операционка Linux OpenSuse 10.3)
это конечно не работает - одна форма выводится поверх другой на одном и том же экране, на котором было запущено приложение, так как у меня 2 независимых друг от друга рабочих стола - т.е. какое-либо окошко нельзя перетащить с одного экрана на другой, но мышка переходит (так и должно быть) - так как же при такой настройке рабочих столов мониторов сделать вывод каждой формы (Form1 и Form2) на свой экран (№0 и №1 соответственно (номера я менял на 1 и 2 - не помогает))? ... использование размеров (как в примере выше) каждой формы не помогает, так как у каждой из них свое разрешение (у каждой 1280*1024 - так и должно быть)... подскажите пож-та...очень надо.... |
Автор: SABROG 2.8.2010, 19:35 |
А QDesktopWidget::screenCount() вообще возвращает число больше одного? |
Автор: gordmiand 2.8.2010, 21:53 |
SABROG: конечно screenCount возвращает число >1...почему нет? у меня эта функция возвращает "2" (собственно 2 монитора у меня и есть)...только к чему тут эта функция? |
Автор: SABROG 2.8.2010, 22:19 | ||
При создании виджетов попробуй для одного выставить родителем один экран, а для другого другой:
|
Автор: gordmiand 2.8.2010, 22:48 | ||
допустим такой примерчик:
ошибка: error: cannot call member function 'QWidget* QDesktopWidget::screen(int)' without object |
Автор: SABROG 3.8.2010, 08:06 | ||
Извиняюсь, я не обратил внимание, что метод не статический. Тогда так:
|
Автор: gordmiand 3.8.2010, 10:04 | ||||
ошибку исправил так:
но эффекта все равно нет...обе формы выводятся на один и тот же экран вне зависимости от указанного мной в констукторе номера экрана для Form2...так почему же не воспринимается задание номера экрана для формы? вроде QDesktopWidget::screen возвращает QWidget *, что как раз и надо для параметра (задает родителя для формы) конструктора класса Form2...ничего не понимаю....вроде так все логично - в качестве родителя форме задаешь нужный тебе экран...может надо делать какие-то дополнительные магипуляции с классом Form2? затем пробовал еще так:
без именений... на всякий случай кинул проект проги... |
Автор: SABROG 3.8.2010, 11:06 |
Попробуй получить ширину в разрешении монитора через QDesktopWidget::availableGeometry(), а потом вызвать метод move() у своего виджета, чтобы передвинуть виджет дальше чем позволяет ширина рабочего стола, возможно тогда виджет появится на другом монике. |
Автор: wectula 9.12.2022, 23:58 |
Модератор: Сообщение скрыто. |