Название: Приложение на нескольких мониторах
Отправлено: ¤Se®ega¤ от Апрель 06, 2009, 02:09
Подскажите где почитать про использование нескольких мониторов.Допустим мне необходимо запустить несколько окон, чтобы каждое окно было на отдельном мониторе.мониторов больше 2(ну это я так, чтобы было написал).
Название: Re: Приложение на нескольких мониторах
Отправлено: uriel от Апрель 06, 2009, 06:56
Примерно так, я думаю. :) C++ (Qt) QWidget *wgt1 = new QWidget(QApplication::desktop()->screen(1)); QWidget *wgt2 = new QWidget(QApplication::desktop()->screen(2));
А вообще посмотрите документацию по QDesktopWidget.
Название: Re: Приложение на нескольких мониторах
Отправлено: Alex Custov от Апрель 06, 2009, 18:10
и надо учитывать, что в случае с Xinerama количество screens будет == 1
Название: Re: Приложение на нескольких мониторах
Отправлено: ¤Se®ega¤ от Апрель 06, 2009, 22:02
и надо учитывать, что в случае с Xinerama количество screens будет == 1
Это касается "извращенного" использования мониторов (N в 1 либо 1 в N)? Мне се гораздо проще.на каждом мониторе свое окно.одно.Сколько мониторов, столько и окон.
Название: Re: Приложение на нескольких мониторах
Отправлено: break от Май 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 сенсорных панели) + выложу все необходимое для нормальной калибровки
Название: Re: Приложение на нескольких мониторах
Отправлено: kuzulis от Май 12, 2009, 12:06
2 ¤Se®ega¤ ,
а не проще ли настроить видеокарту на работу с двумя мониторами и мышкой перетянуть окно на другой монитор? :) (если речь про Windows идет, т.к. в Linux не пробовал)
Название: Re: Приложение на нескольких мониторах
Отправлено: Dodge от Май 12, 2009, 13:11
Если нужно поделюсь своим xorg.conf (где настроены 4 моника + 2 сенсорных панели) + выложу все необходимое для нормальной калибровки
Выложи =)
Название: Re: Приложение на нескольких мониторах
Отправлено: break от Май 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 если надо
|