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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [MacOS] Растянуть окно на все мониторы  (Прочитано 8030 раз)
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


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


Просмотр профиля
« : Январь 30, 2015, 16:41 »

Всем привет. Стоит задача растянуть окно на все мониторы которые есть. Под маком эта задача тривиально не решается. После выхода Мак ОС 10.9 по умолчанию каждый дисплей это отдельное пространство и растянуть окно на несколько мониторов в принципе не возможно, просто половина окна которая будет заходить на второй монитор, не будет отрисовываться. Компания Apple предлагает нам такое решение

Код:
NSDictionary *opts = [NSDictionary dictionaryWithObjectsAndKeys:
      [NSNumber numberWithBool:YES], NSFullScreenModeAllScreens,
       nil];

NSView *view = [window contentView];
[view enterFullScreenMode:[NSScreen mainScreen] withOptions:opts];

Вроде как настройка NSFullScreenModeAllScreens говорит сама за себя, растянуто должно быть на все мониторы, но не тут то было. NSView отрисовывается только на том мониторе который передается в enterFullScreenMode, поискав немного в интернете нашел еще такое решение

Код:
NSDictionary *opts = [NSDictionary dictionaryWithObjectsAndKeys:
      [NSNumber numberWithBool:YES], NSFullScreenModeAllScreens,
       nil];

NSView *view = [window contentView];
[view enterFullScreenMode:[NSScreen mainScreen] withOptions:opts];

NSRect frame = [view.window frame];
frame.size.width *= 2;
[view.window setContentSize:frame.size];

видимо у кого то это работало, но у меня не завелось. NSView растягивается на оба экрана, но рисуется так же на одном. Собственно вопрос, может быть кто то сталкивался с тем, что под маком необходимо растянуть окно на все мониторы ?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Январь 30, 2015, 18:31 »

не совсем по теме, но используй современный синтаксис для словарей, раз у тебя все значения гарантированно нениловые:
Код
Objective-C
NSDictionary *opts = @{NSFullScreenModeAllScreens: @YES};
да и тут вообще можно без временной переменной писать
« Последнее редактирование: Январь 31, 2015, 14:47 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


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


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

Спасибо, учту, в objective-c не силен :-)
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Январь 31, 2015, 15:28 »

поздравляю с первым вопросом на стеке Крутой
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


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


Просмотр профиля
« Ответ #4 : Февраль 01, 2015, 20:47 »

Спасибо, жаль ответ не порадовал Улыбающийся
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #5 : Февраль 04, 2015, 12:32 »

а средствами куте через QDesktopWidget?
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


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


Просмотр профиля
« Ответ #6 : Февраль 04, 2015, 15:59 »

Те же проблемы, окно растянется только на один монитор, растянуть шире не позволит ОС, собственно поэтому я и полез в дебри Cocoa, надеялся, что можно обойти, как оказалось нельзя.

Только создание окон на каждый из мониторов и синхронизация их работы.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #7 : Февраль 04, 2015, 21:17 »

ну игры же как-то работают на миллионе мониторов... или то только в винде?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Bepec
Гость
« Ответ #8 : Февраль 04, 2015, 22:15 »

Это вообще скорее фишка видеокарточки, хотя конечно интересный вопрос - можно ли в линуксах растягивать окно на 2 моника Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #9 : Февраль 04, 2015, 22:17 »

Это вообще скорее фишка видеокарточки, хотя конечно интересный вопрос - можно ли в линуксах растягивать окно на 2 моника Улыбающийся
Можно.
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


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


Просмотр профиля
« Ответ #10 : Февраль 05, 2015, 12:04 »

ну игры же как-то работают на миллионе мониторов... или то только в винде?

В основном игры под винду затачивают, все таки рынок больше. Ну, а под маком как я уже писал зависит от настройки системы. Под линуксом можно развернуть, но тоже с нюансами, в зависимости от дистрибутива. В моем случае нужно обойти настройки системы Мака :-)
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #11 : Февраль 05, 2015, 15:36 »

может разве что драйвер (кекст) написать...
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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