Название: Автоматическое преобразование приложения в Graphics View Отправлено: Sasha от Апрель 09, 2012, 11:23 Здравствуйте.
Я нарисовал интерфейс приложения в дизайнере. При этом в программе автоматичеки добавился код по его созданию. Теперь я хочу автоматичеки преобразовать его к GraphicsView. Как это лучше сделать? Я попробовал так: Код: int g_cxWorld = 640; Прилипающие окна (dock-и) ведут себя мягко выражаясь плохо:
Вобщем у кого какие идеи? Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: mutineer от Апрель 09, 2012, 11:25 ужас какой... зачем оно вообще так? либо используй морду из дизайнера или делай все сразу в сцене, имхо
Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Sasha от Апрель 09, 2012, 11:58 ужас какой... зачем оно вообще так? либо используй морду из дизайнера или делай все сразу в сцене, имхо Хорошо спрошу по другому:Я хочу чтобы, кода я меняю размер главного окна приложения, автоматически менялся масштаб его содержимого. Под масштабом я понимаю следующее: все контролы должны увеличиваться/уменьшаться пропорционально изменению размера главного окна - это, конечно легко решается лэйаутами, НО мне нужно чтобы при этом автоматически увеличивались/уменьшались шрифты всех текстов (на кнопках, в эдитах, меню,...) и все остальные "подэлементы" контролов - иконки на кнопках, закладки на тулбарах, кнопки на скролингах, стрелочки на кнопках скролингов и прочее... Как это сделать? Одна из идей - это всё засунуть в графический вид и дальше хоть масштабировать, хоть поворачивать, хоть ещё любые другие матричные преобразования, хотя мне нужно только масштабирование. И вот, пойдя по этому пути, я наткнулся на проблеммы, частично описанные в первом моём посте темы. Т.е. пока главная проблемма с неожидаемым поведением прилипающий окон (dock-ов) будучи преобразованных к графическому виду. Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Sasha от Апрель 09, 2012, 12:02 ужас какой... зачем оно вообще так? либо используй морду из дизайнера или делай все сразу в сцене, имхо Но если не использовать дизайнер, то сразу же теряется часть преимуществ. Например, сложнее что-то подправить в интерфейсе.Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: V1KT0P от Апрель 09, 2012, 12:38 ужас какой... зачем оно вообще так? либо используй морду из дизайнера или делай все сразу в сцене, имхо Хорошо спрошу по другому:Я хочу чтобы, кода я меняю размер главного окна приложения, автоматически менялся масштаб его содержимого. Под масштабом я понимаю следующее: все контролы должны увеличиваться/уменьшаться пропорционально изменению размера главного окна - это, конечно легко решается лэйаутами, НО мне нужно чтобы при этом автоматически увеличивались/уменьшались шрифты всех текстов (на кнопках, в эдитах, меню,...) и все остальные "подэлементы" контролов - иконки на кнопках, закладки на тулбарах, кнопки на скролингах, стрелочки на кнопках скролингов и прочее... Как это сделать? Одна из идей - это всё засунуть в графический вид и дальше хоть масштабировать, хоть поворачивать, хоть ещё любые другие матричные преобразования, хотя мне нужно только масштабирование. И вот, пойдя по этому пути, я наткнулся на проблеммы, частично описанные в первом моём посте темы. Т.е. пока главная проблемма с неожидаемым поведением прилипающий окон (dock-ов) будучи преобразованных к графическому виду. Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Bepec от Апрель 09, 2012, 12:41 Очень похоже на :
- Милок, ай милок, чагось ты тут ядрёну бомбу приволок? - Дык картошку копать бабушка. - Чагось не лопатой то? - Таки долго, а так бум - и вся картошка выкопана. Прав Виктор - вы ад хотите сотворить. Зачем вам это? Лучше опишите чего хотите сделать (не "надо мне вот это", а "хоче сделать редактор"). А мы вам способ посоветуем. Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Sasha от Апрель 09, 2012, 13:10 Может стоит глянуть в сторону QML? А можно ли в QML создавать стандартные контролы?Ибо то что ты описываешь просто ад какой-то. Что именно ад? Само масштабирование или то, как я это хочу делать?Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Igors от Апрель 09, 2012, 13:16 НО мне нужно чтобы при этом автоматически увеличивались/уменьшались шрифты всех текстов (на кнопках, в эдитах, меню,...) и все остальные "подэлементы" контролов - иконки на кнопках, закладки на тулбарах, кнопки на скролингах, стрелочки на кнопках скролингов и прочее... Как это сделать? Одна из идей - это всё засунуть в графический вид и дальше хоть масштабировать, хоть поворачивать, хоть ещё любые другие матричные преобразования, хотя мне нужно только масштабирование. Не изучал но вряд ли кто-то будет уменьшать шрифты и.т.п. - скорее всего просто "в картинку" т.е. растр и с масштабом сильно не разгонишься. Выбранный путь нормальный (а может и лучший) если нужно что-то типа "виртуального экрана". Но просто "чтобы уменьшить" - конечно несерьезноИ вот, пойдя по этому пути, я наткнулся на проблеммы, частично описанные в первом моём посте темы. Т.е. пока главная проблемма с неожидаемым поведением прилипающий окон (dock-ов) будучи преобразованных к графическому виду. А попробовать сначала добавить только док - как он себя поведет?Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Sasha от Апрель 09, 2012, 13:16 Очень похоже на : Действительно похоже :)- Милок, ай милок, чагось ты тут ядрёну бомбу приволок? - Дык картошку копать бабушка. - Чагось не лопатой то? - Таки долго, а так бум - и вся картошка выкопана. Прав Виктор - вы ад хотите сотворить. Зачем вам это? Лучше опишите чего хотите сделать (не "надо мне вот это", а "хоче сделать редактор"). А мы вам способ посоветуем. Я уже не знаю как ещё описать. Можно ещё так:Будучи раскрытым на весь экран приложение должно МАКСИМАЛЬНО одинаково выглядеть при разных разрешениях экрана. Вобщем аналог лэйаутов, только с учётом содержимого контролов, а не только геометрии. Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Bepec от Апрель 09, 2012, 13:23 Я уже не знаю как ещё описать. Можно ещё так: Будучи раскрытым на весь экран приложение должно МАКСИМАЛЬНО одинаково выглядеть при разных разрешениях экрана. Вобщем аналог лэйаутов, только с учётом содержимого контролов, а не только геометрии. По секрету скажу - приложение с фиксированным размером виджетов, будет Цитировать МАКСИМАЛЬНО одинаково выглядеть при разных разрешениях экрана. PS а зачем вам это?? просто и банально скажи - зачем? Цель этого приложения? Пульт/редактор/система связи/ядрёный чемоданчик/компилятор/IDE? Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Sasha от Апрель 09, 2012, 13:27 Не изучал но вряд ли кто-то будет уменьшать шрифты и.т.п. - скорее всего просто "в картинку" т.е. растр и с масштабом сильно не разгонишься. Выбранный путь нормальный (а может и лучший) если нужно что-то типа "виртуального экрана". Но просто "чтобы уменьшить" - конечно несерьезно В первом посте темы я привёл код, который работает. И там всё масштабируется, но есть огрехи, которые я и ищу как исправить.Я не совсем понял, что значит: А попробовать сначала добавить только док - как он себя поведет? В смысле не загонять его в графический вид?Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Igors от Апрель 09, 2012, 13:33 В смысле не загонять его в графический вид? В смысле попробовать только док виджет - вместо главного окна.Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Sasha от Апрель 09, 2012, 13:35 По секрету скажу - приложение с фиксированным размером виджетов, будет В моём понимании не МАКСИМАЛЬНО поскольку, например, кнопка занимающая 1/10 экрана при разрешении 640x480 будет занимать только 1/20 экрана при разрешении 1280x960Цитировать МАКСИМАЛЬНО одинаково выглядеть при разных разрешениях экрана. PS а зачем вам это?? просто и банально скажи - зачем? Цель этого приложения? Пульт/редактор/система связи/ядрёный чемоданчик/компилятор/IDE? Пульт под сенсорный экран. Причём возможно, что экранов может быть и несколько и возможно потребуется отдельные окна приложения располагать на разных экранах (отсюда необходимость dock-ов). Разрешение же экрана заранее не оговорено, да и помоему это нехорошо его фиксировать.Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Sasha от Апрель 09, 2012, 13:38 В смысле попробовать только док виджет - вместо главного окна. А разве док может быть без главного окна? Или я что-то не понимаю? Сейчас посмотрю, конечно.Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Sasha от Апрель 09, 2012, 13:45 В смысле не загонять его в графический вид? В смысле попробовать только док виджет - вместо главного окна.Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: V1KT0P от Апрель 09, 2012, 13:53 Пульт под сенсорный экран. Причём возможно, что экранов может быть и несколько и возможно потребуется отдельные окна приложения располагать на разных экранах (отсюда необходимость dock-ов). Разрешение же экрана заранее не оговорено, да и помоему это нехорошо его фиксировать. QML изначально создавался для сенсорных экранов, чтобы можно было использовать мультитач. А также там очень просто делаются всякие свистелки. И если я не ошибаюсь то размеры объектам там можно задавать в процентах, а это то что вам нужно. Советую все таки приглядеться, ибо из того что вы делаете сейчас ничего хорошего не выйдет.Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Bepec от Апрель 09, 2012, 14:25 +1 Виктору. QML как раз для тачей.
Но с одной маленькой поправкой - создать интерфейс, выглядящий одинакого при любом разрешении экрана у вас получится. Но получится уродец. Хотя если посвятить себя эдак на недельку отладке на различных экранах, убирать глюки/лаги/наложения/ кривые шрифты, то тогда да ;) PS берите пример с уже готовых продуктов. Та же windows выглядит одинакого на любом разрешении экрана. А почему? потому что там идут фиксированные, стандартные константы ;) Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: V1KT0P от Апрель 09, 2012, 15:03 +1 Виктору. QML как раз для тачей. Если оно там само шрифты отрисовывает, то будет одинаково. Вроде тролли гарантируют что все что рисуется на QImage будет одинаково на всех платформах, думаю в QML должно быть тоже-самое.Но с одной маленькой поправкой - создать интерфейс, выглядящий одинакого при любом разрешении экрана у вас получится. Но получится уродец. Хотя если посвятить себя эдак на недельку отладке на различных экранах, убирать глюки/лаги/наложения/ кривые шрифты, то тогда да ;) PS берите пример с уже готовых продуктов. Та же windows выглядит одинакого на любом разрешении экрана. А почему? потому что там идут фиксированные, стандартные константы ;) Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Bepec от Апрель 09, 2012, 15:52 Таки ты учти, что там с учётом шрифтов рисуется. Загонят эту прогу на какой нить айпод и усё. Шрифты съедут, виджеты спрячутся, интерфейс обезображен :)
Там жеж не просто рисовать. А с учётом величины шрифтов и прочего. PS Помоему, гнилая идея о "везде одинакого". Одинаковым может быть стиль, не более того. Представлю как ваша программа обидится на 22" мониторчик, плакать хочется. Буквы на полэкрана... Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: iroln от Апрель 09, 2012, 16:20 PS берите пример с уже готовых продуктов. Та же windows выглядит одинакого на любом разрешении экрана. А почему? потому что там идут фиксированные, стандартные константы ;) Windows c её окнами диалогов у которых не меняется размер - это не лучший пример для подражания. :)Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Sasha от Апрель 09, 2012, 17:59 На QML я смотрел, но по ней у меня следующие вопросы-замечания:
Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: V1KT0P от Апрель 09, 2012, 18:56 На QML я смотрел, но по ней у меня следующие вопросы-замечания: QML это сборная HTML+CSS+JavaScripts. dock-и врятли есть готовые, скорее придется самому делать.
Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Igors от Апрель 09, 2012, 19:05 На QML я смотрел, но по ней у меня следующие вопросы-замечания: А у Вас есть реальный выбор? Вариант с GraphicsScene выглядит явно наивным. Включите житейский здравый смысл - если бы так просто можно было создать "универсальный экран" - то чего ж так никто не делает? (люди тоже не дураки). Ну так и чего нос воротить от QML? Технология "молода и хороша собой - чего же Вам еще?" :)
Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: V1KT0P от Апрель 09, 2012, 19:50 Ну так и чего нос воротить от QML? Технология "молода и хороша собой - чего же Вам еще?" :) Ему не нравится что под нее еще не готово кучи плюшек. Но я думаю если мозг есть, то замутить что-то не проблема.Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: iroln от Апрель 09, 2012, 19:55 Ему не нравится что под нее еще не готово кучи плюшек. Но я думаю если мозг есть, то замутить что-то не проблема. Тут скорее не мозг нужен, а время. Время всем жалко тратить на подобные вещи. Хотя не думаю, что вариант с GraphicsView вообще будет работать. :)Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Bepec от Апрель 10, 2012, 06:54 В упрощенном варианте работать будет. Сам когда то делал "автоподбор размеров" виджетов в лейауте.
Однако чем дальше в код, тем толще партизаны. Некорректность некоторых шрифтов при разных размерах, режущие глаза линии, боль в глазах после получаса работы - это лишь малая часть того, что получилось. Шрифты стандартные. Вот только они не предрасположены к "произвольным" изменениям размеров. Я вам предлагаю - не гонитесь за голубой птицей.(читай "не беги за совершенством") Сделай общий стиль и расстановку компонентов. Должно хватить для однородности интерфейса на разных разрешениях. PS вон у самого на работе панельник стоит - и представь. При желании можно тыкнуть в любую кнопочку виндовс и попасть. Хотя они ведь не мультиразмерные? :P Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: iroln от Апрель 10, 2012, 09:26 Как же всё просто в WPF с масштабированием. Оно и понятно, когда всё векторное - масштабирование это элементарная процедура. :)
Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Bepec от Апрель 10, 2012, 09:43 Не пользовался. Киньте пару ссылок посмотреть на сие чудо ;)
Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: V1KT0P от Апрель 10, 2012, 11:20 Как же всё просто в WPF с масштабированием. Оно и понятно, когда всё векторное - масштабирование это элементарная процедура. :) В QML тоже все просто и никто не мешает пихать туда только векторные вещи.Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: iroln от Апрель 10, 2012, 12:08 Не пользовался. Киньте пару ссылок посмотреть на сие чудо ;) Ну вот по первой ссылке в гугле (wpf ui scaling) неплохой пример:http://blogs.msdn.com/b/ivo_manolov/archive/2007/10/05/ui-scaling-ui-zooming-with-wpf.aspx Каждый элемент в WPF может быть линейно отмасштабирован на любой размер вместе со шрифтами. Мне кажется, это очень удобно, когда нужно не меняя интерфейса приложения комфортно работать на разном разрешении. Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: V1KT0P от Апрель 10, 2012, 12:25 Не пользовался. Киньте пару ссылок посмотреть на сие чудо ;) Ну вот по первой ссылке в гугле (wpf ui scaling) неплохой пример:http://blogs.msdn.com/b/ivo_manolov/archive/2007/10/05/ui-scaling-ui-zooming-with-wpf.aspx Каждый элемент в WPF может быть линейно отмасштабирован на любой размер вместе со шрифтами. Мне кажется, это очень удобно, когда нужно не меняя интерфейса приложения комфортно работать на разном разрешении. Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Bepec от Апрель 10, 2012, 12:28 Тю. В принципе и понятно, если векторы. Но ведь интерфейс выглядит разнородно в этом примере ;)
Остаётся общим только стиль, как и следовало ожидать :) Но не спорю - с векторной графикой прикольно. Виктор прав. Это излишне для большинства задач. Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: iroln от Апрель 10, 2012, 12:29 В Qt даже без QML можно сделать свои виджеты которые будут одинаково выглядеть при разных разрешениях. Другое дело что это мало кому нужно поэтому это и не делают. Это надо делать свои виджеты, а там это на уровне инструментария поддерживается для всех компонентов как стандартная функциональность. В этом и разница. А нужно это кому-то или не нужно - вопрос уже философский и требует отдельного рассмотрения. :)Bepec, ну так я сразу сказал, что вектор. Никто не скрывает. Бывает нужно. Я пользуюсь одной такой программой, и на разных мониторах меняю масштаб. То есть реально использую данную функцию. Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: V1KT0P от Апрель 10, 2012, 12:47 В Qt даже без QML можно сделать свои виджеты которые будут одинаково выглядеть при разных разрешениях. Другое дело что это мало кому нужно поэтому это и не делают. Это надо делать свои виджеты, а там это на уровне инструментария поддерживается для всех компонентов как стандартная функциональность. В этом и разница. А нужно это кому-то или не нужно - вопрос уже философский и требует отдельного рассмотрения. :)Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Bepec от Апрель 10, 2012, 13:40 Насчёт вектора я в курсе, что вы об этом писали.
А насчёт "я использую и оно мне надо", это как: я использую велосипедный держатель для бутылки. Бутылки у меня правда нет, но я его реально использую ;) Расширить функционал Qt для этой цели - дело ну часика, или двух. Наследоваться от необходимых тебе классов и Promote to. И в дальнейшем данный функционал будет достигаться 3-5 кликами мышки. PS но моё ИМХО - для расширяемого на весь экран, полностью меняющегося окна программы, необходим минимум компоновщик с сотней - другой настроек(Или маленький ИИ). Ибо в душе не чаю, как вы перейдёте к примеру с 800x600 на 640x480. Там условностей до фени. При этом должна учитываться читабельность/кликабельность и прочая ;) Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: V1KT0P от Апрель 10, 2012, 13:43 PS но моё ИМХО - для расширяемого на весь экран, полностью меняющегося окна программы, необходим минимум компоновщик с сотней - другой настроек(Или маленький ИИ). Ибо в душе не чаю, как вы перейдёте к примеру с 800x600 на 640x480. Там условностей до фени. При этом должна учитываться читабельность/кликабельность и прочая ;) Веселее всего будет с кнопками, ибо там проценты будут выставлены так чтоб на мобильных устройствах можно было нормально кликать. А когда запустят эту же прогу на стационарном компе кнопки будут с пол экрана =).Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Bepec от Апрель 10, 2012, 13:57 Угу. Я ради прикола приложение под андроид собрал на панельник ;) Буквы для слепых получились - в четверть экрана :D
Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Sasha от Апрель 10, 2012, 15:01 Да, вот WPF бы подошёл, еслиб был в Qt. Кстати, я что-то слышал, что в Qt5 все виджеты в основе будут иметь что-то типа QGraphicsWidget
Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Bepec от Апрель 10, 2012, 15:18 Qt 5 вроде пока только альфа. Ещё ничего стабильного нет ( в смысле конечного релиза), так что вполне возможно.
update: посмотрел снапшот - ничего подобного. Увы. Не видать вам стандартных саморастягивающихся векторных виджетов в Qt ;) Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: iroln от Апрель 10, 2012, 15:21 Да, вот WPF бы подошёл, еслиб был в Qt. Кстати, я что-то слышал, что в Qt5 все виджеты в основе будут иметь что-то типа QGraphicsWidget В Qt5 QWidget будет вынесенен в отдельный модуль QtWidgets, а для GUI как основной инструмент будет предоставляться QML. Поэтому рано или поздно все там будем. :)Название: Re: Автоматическое преобразование приложения в Graphics View Отправлено: Bepec от Апрель 10, 2012, 15:23 Это уже ближе к истине ;)
QML силён в своей простоте и количестве кода. Завораживают результаты на нём, но руки до него не доходят. |