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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Приложение на нескольких мониторах  (Прочитано 8944 раз)
¤Se®ega¤
Гость
« : Апрель 06, 2009, 02:09 »

Подскажите где почитать про использование нескольких мониторов.Допустим мне необходимо запустить несколько окон, чтобы каждое окно было на отдельном мониторе.мониторов больше 2(ну это я так, чтобы было написал).
Записан
uriel
Гость
« Ответ #1 : Апрель 06, 2009, 06:56 »

Примерно так, я думаю. Улыбающийся
Код
C++ (Qt)
QWidget *wgt1 = new QWidget(QApplication::desktop()->screen(1));
QWidget *wgt2 = new QWidget(QApplication::desktop()->screen(2));

А вообще посмотрите документацию по QDesktopWidget.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #2 : Апрель 06, 2009, 18:10 »

и надо учитывать, что в случае с Xinerama количество screens будет == 1
Записан
¤Se®ega¤
Гость
« Ответ #3 : Апрель 06, 2009, 22:02 »

и надо учитывать, что в случае с Xinerama количество screens будет == 1
Это  касается "извращенного" использования мониторов (N в 1 либо 1 в N)?
Мне се гораздо проще.на каждом мониторе свое окно.одно.Сколько мониторов, столько и окон.
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #4 : Май 07, 2009, 13:02 »

Столкнулся с подобной задачей!
Ubuntu Linux 8.04 (под виндой тоже должно работать но не тестил)
Карты Nvidia
Конфиг который удалось заставить стабильно работать --- четыре монитора (2 видеокарты на материнке PCI-Express), из них любой может быть повернут (90, -90, 180), также вместо любого можно использовать сенсорные панели ( General Touch OTL17, OTL173, OTL15), панели также могут быть повернуты, есть способ откалибровать их. Должно работать и с другими панелями (под рукой были еще какие-то китайские завелись и откалибровались). На экранах может быть совершенно разное установлено разрешение, они вообще могут быть любыми - например 42 дюйма плазма телек и автомобильный телек + сенсорная панель 17 дюймов... и т.д.

В xorg.conf экраны должны быть настроены как Separate X Screen, Xenerama должна быть отключена

Через Qt ваша задача решается так:

QWidget* parentSCR = QApplication::desktop()->screen( m_nScreenNum );
m_pMyFormClass = new CMyFormClass( parentSCR );

m_pMyFormClass - появится на экране m_nScreenNum (от 0 до число экранов-1)

Кроме того в линукс - когда экраны именно Separate X Screen, - можно запустить любую программу на нужном экране командой:

DISPLAY=:0.1 ./my_super_puper_app

здесь
:0.0 --- 1 экран
:0.1 --- 2 экран
:0.2 --- 3 экран
:0.3 --- 4 экран

Если нужно поделюсь своим xorg.conf (где настроены 4 моника + 2 сенсорных панели) + выложу все необходимое для нормальной калибровки
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #5 : Май 12, 2009, 12:06 »

2 ¤Se®ega¤ ,

а не проще ли настроить видеокарту на работу с двумя мониторами и мышкой перетянуть окно на другой монитор? Улыбающийся (если речь про Windows идет, т.к. в Linux не пробовал)
Записан

ArchLinux x86_64 / Win10 64 bit
Dodge
Гость
« Ответ #6 : Май 12, 2009, 13:11 »

Если нужно поделюсь своим xorg.conf (где настроены 4 моника + 2 сенсорных панели) + выложу все необходимое для нормальной калибровки
Выложи =)
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #7 : Май 13, 2009, 22:44 »

Код:
#
#  Универсальный XORG.CONF
#  Конфигаруция 4 экрана + 2 сенсорных панели (закомментированы в Layout-е)
#  Должно нормально работать с любым числом экранов от 1 до 4
#  Откалибровано для сенсорной панели General Touch OTL17
#  После первого запуска поставить реальные bus-id для видеокарт чтобы нормально заработали все экраны
#  их можно узнать запустив nvidia-settings
#  Раскомментировать сенсорные панели если это необходимо (на некоторых системах не запускается если панели раскомментированы в лейауте но не подключены на самом деле)
#  Есть возможность калибровки сенсорных панелей - требуется запуск без Xorg (работает не совсем как написано, но в конце выдает верные значения MinX, MinY, MaxX, MaxY)
#  Для запуска калибровки - перегрузиться в recovery mode (или остановить Xorg) перейти в папку /usr/lib/xf86-input-evtouch/ и запустить calibrate.sh
#  предварительно файл empty_cursor.xbm должен лежать в корне (скопировать из /usr/share/xf86-input-evtouch)
#  естественно evtouch олжен быть установлен
#  Переключения Русск/Англ раскладки по CapsLock
#  Поворот экранов осуществляется командо xrand  например: xrand -d:0.1 -o left    ------- повернет второй экран

Section "Files"
Fontpath "/usr/local/share/fonts"
EndSection

Section   "InputDevice"
    ## общие параметры для первой сенсорной панели
    Identifier "touchscreen1"
    Driver "evtouch"
    Option "Device" "/dev/input/by-path/pci-0000:00:0b.0-usb-0:1:1.0-event-mouse"
    Option "DeviceName" "touchscreen1"
    Option  "ScreenNumber" "0"
    Option  "MoveLimit" "3"

   ## параметры для панели MicroTouch OTL173
Option "MinX" "1257"
Option "MinY" "1538"
Option "MaxX" "4487"
Option "MaxY" "4193"
    Option "SwapY" "1"

    ## общие параметры пока не используемые
    #Option   "SwapXY"   "1"

    #Option "TapTimer" "50"
    #Option "ReportingMode" "Raw"
    #Option "Emulate3Buttons" "No"
    #Option "Emulate3Timeout" "50"
    #Option "SendCoreEvents" "On"
    #Option "Calibrate" "1"
    #Option "Rotate" "CCW"
EndSection

Section "InputDevice"
    ## общие параметры для второй сенсорной панели
    Identifier "touchscreen2"
    Driver "evtouch"
    Option "Device" "/dev/input/by-path/pci-0000:00:0b.0-usb-0:2:1.0-event-mouse"
    Option "DeviceName" "touchscreen2"
    Option  "ScreenNumber" "1"
    Option  "MoveLimit" "3"

    ## параметры для панели MicroTouch OTL173 для повернутой панели 90
    Option "MinX" "1239"
    Option "MinY" "1581"
    Option "MaxX" "5295"
    Option "MaxY" "3647"
    Option "SwapY" "1"

    ## общие параметры пока не используемые
    #Option   "SwapXY"   "1"
    #Option "ReportingMode" "Raw"
    #Option "Emulate3Buttons" "No"
    #Option "Emulate3Timeout" "50"
    #Option "SendCoreEvents" "No"
    #Option "Calibrate" "1"
    #Option "Rotate" "CCW"
EndSection

Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "us,ru(winkeys)"
Option "XkbVariant" "nodeadkeys"
Option "XkbOptions" "grp:caps_toggle, grp:win_switch"
EndSection

Section "InputDevice"
Identifier "Configured Mouse"
Driver "mouse"
Option "CorePointer"
Option "Device" "/dev/input/mice"
Option "Protocol" "ImPS/2"
Option "ZAxisMapping" "4 5"
Option "Emulate3Buttons" "true"
EndSection

Section "InputDevice"
Driver "wacom"
Identifier "stylus"
Option "Device" "/dev/input/wacom"
Option "Type" "stylus"
Option "ForceDevice" "ISDV4"# Tablet PC ONLY
EndSection

Section "InputDevice"
Driver "wacom"
Identifier "eraser"
Option "Device" "/dev/input/wacom"
Option "Type" "eraser"
Option "ForceDevice" "ISDV4"# Tablet PC ONLY
EndSection

Section "InputDevice"
Driver "wacom"
Identifier "cursor"
Option "Device" "/dev/input/wacom"
Option "Type" "cursor"
Option "ForceDevice" "ISDV4"# Tablet PC ONLY
EndSection

Section "Device"
Identifier "nVidia_GeForce_1"
Driver "nvidia"
Busid "PCI:1:0:0"
Option "AddARGBVisuals" "True"
Option "AddARGBGLXVisuals" "True"
Option "NoLogo" "False"
Screen 0
EndSection

Section "Device"
Identifier "nVidia_GeForce_2"
Driver "nvidia"
Busid "PCI:1:0:0"
Option "NoLogo" "False"
Screen 1
EndSection

Section "Device"
Identifier "nVidia_GeForce_3"
Driver "nvidia"
#Busid "PCI:4:0:0"
Option "AddARGBVisuals" "True"
Option "AddARGBGLXVisuals" "True"
Option "NoLogo" "False"
Screen 0
EndSection

Section "Device"
Identifier "nVidia_GeForce_4"
Driver "nvidia"
#Busid "PCI:4:0:0"
Option "NoLogo" "False"
Screen 1
EndSection

Section "Monitor"
Identifier "Monitor_1"
Option "DPMS"
Horizsync 28-51
Vertrefresh 43-60
EndSection

Section "Monitor"
Identifier "Monitor_2"
Option "DPMS"
Horizsync 28-51
Vertrefresh 43-60
EndSection

Section "Monitor"
Identifier "Monitor_3"
Option "DPMS"
Horizsync 28-51
Vertrefresh 43-60
EndSection

Section "Monitor"
Identifier "Monitor_4"
Option "DPMS"
Horizsync 28-51
Vertrefresh 43-60
EndSection

Section "Screen"
Identifier "Screen_1"
Device "nVidia_GeForce_1"
Monitor "Monitor_1"
Defaultdepth 24
Option "RandRRotation" "true"
SubSection "Display"
Modes "1280x1024"
EndSubSection
EndSection

Section "Screen"
Identifier "Screen_2"
Device "nVidia_GeForce_2"
Monitor "Monitor_2"
Defaultdepth 24
Option "RandRRotation" "true"
SubSection "Display"
Modes "1280x1024"
EndSubSection
EndSection

Section "Screen"
Identifier "Screen_3"
Device "nVidia_GeForce_3"
Monitor "Monitor_3"
Defaultdepth 24
Option "RandRRotation" "true"
SubSection "Display"
Modes "1280x1024"
EndSubSection
EndSection

Section "Screen"
Identifier "Screen_4"
Device "nVidia_GeForce_4"
Monitor "Monitor_4"
Defaultdepth 24
Option "RandRRotation" "true"
SubSection "Display"
Modes "1280x1024"
EndSubSection
EndSection

Section "ServerLayout"
Identifier "Default Layout"
Screen 0 "Screen_1" 0 0
Screen 1 "Screen_2" RightOf "Screen_1"
Screen 2 "Screen_3" RightOf "Screen_2"
Screen 3 "Screen_4" RightOf "Screen_3"
Inputdevice "Generic Keyboard"
Inputdevice "Configured Mouse"
#InputDevice "touchscreen1"
#InputDevice "touchscreen2"

# Uncomment if you have a wacom tablet
# InputDevice     "stylus" "SendCoreEvents"
# InputDevice     "cursor" "SendCoreEvents"
# InputDevice     "eraser" "SendCoreEvents"
EndSection

Section "Extensions"
Option "Composite" "Enable"
EndSection


Кроме способа калибровки описанного в комментарие Xorg - есть еще т.к. этот не со всеми панелями будет работать, - в некоторых случаях необходима пересборка драйвера usbtouchscreen - есть архив который знающие люди уже создали - со всеми исходниками и даже маленькой программой калибровки написанной на Qt - вышлю на mail если надо
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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