Russian Qt Forum

Qt => Общие вопросы => Тема начата: ecspertiza от Январь 30, 2015, 16:41



Название: [MacOS] Растянуть окно на все мониторы
Отправлено: ecspertiza от Январь 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 растягивается на оба экрана, но рисуется так же на одном. Собственно вопрос, может быть кто то сталкивался с тем, что под маком необходимо растянуть окно на все мониторы ?


Название: Re: [MacOS] Растянуть окно на все мониторы
Отправлено: kambala от Январь 30, 2015, 18:31
не совсем по теме, но используй современный синтаксис для словарей, раз у тебя все значения гарантированно нениловые:
Код
Objective-C
NSDictionary *opts = @{NSFullScreenModeAllScreens: @YES};
да и тут вообще можно без временной переменной писать


Название: Re: [MacOS] Растянуть окно на все мониторы
Отправлено: ecspertiza от Январь 31, 2015, 13:21
Спасибо, учту, в objective-c не силен :-)


Название: Re: [MacOS] Растянуть окно на все мониторы
Отправлено: kambala от Январь 31, 2015, 15:28
поздравляю с первым вопросом на стеке 8)


Название: Re: [MacOS] Растянуть окно на все мониторы
Отправлено: ecspertiza от Февраль 01, 2015, 20:47
Спасибо, жаль ответ не порадовал :)


Название: Re: [MacOS] Растянуть окно на все мониторы
Отправлено: Fregloin от Февраль 04, 2015, 12:32
а средствами куте через QDesktopWidget?


Название: Re: [MacOS] Растянуть окно на все мониторы
Отправлено: ecspertiza от Февраль 04, 2015, 15:59
Те же проблемы, окно растянется только на один монитор, растянуть шире не позволит ОС, собственно поэтому я и полез в дебри Cocoa, надеялся, что можно обойти, как оказалось нельзя.

Только создание окон на каждый из мониторов и синхронизация их работы.


Название: Re: [MacOS] Растянуть окно на все мониторы
Отправлено: kambala от Февраль 04, 2015, 21:17
ну игры же как-то работают на миллионе мониторов... или то только в винде?


Название: Re: [MacOS] Растянуть окно на все мониторы
Отправлено: Bepec от Февраль 04, 2015, 22:15
Это вообще скорее фишка видеокарточки, хотя конечно интересный вопрос - можно ли в линуксах растягивать окно на 2 моника :)


Название: Re: [MacOS] Растянуть окно на все мониторы
Отправлено: Old от Февраль 04, 2015, 22:17
Это вообще скорее фишка видеокарточки, хотя конечно интересный вопрос - можно ли в линуксах растягивать окно на 2 моника :)
Можно.


Название: Re: [MacOS] Растянуть окно на все мониторы
Отправлено: ecspertiza от Февраль 05, 2015, 12:04
ну игры же как-то работают на миллионе мониторов... или то только в винде?

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


Название: Re: [MacOS] Растянуть окно на все мониторы
Отправлено: kambala от Февраль 05, 2015, 15:36
может разве что драйвер (кекст) написать...