Как стать автором
Обновить

Комментарии 25

А почему не на QGraphicsScene? Она же лучше подходит для всяких custom вещей.
К сожалению я ее не использовал еще. Может быть посмотрю в ее сторону, но не сейчас.
Спасибо — обязательно посмотрю.
А можно ли обновлять только часть виджета в paintEvent? Т.е. перерисовывать не всё поле, а только те клетки, которые изменились? Понятно, что вы специально так не сделали… Вопрос о возможности как таковой.
Нет. paintEvent по определению вызывается тогда, когда нужно перерисовать весь виджет или его часть (нужная область передается через параметр QPaintEvent * event). Причем под частью здесь подразумевается не область с изменившимися клетками, а область, вылезшая, например, из-за пределов данного виджета при прокрутке и т.п, т.е. определяемая внешними по отношению к данному виджету факторами.
Хотя, в update(), вызываемый из таймер эвента, конечно, можно передавать обновляемую область в качестве параметра.
Спасибо за наводку! ;)
Перерисовка тех клеточек, что изменились, по сути не связана с работой самого paintEvent, как уже говорил SiLiKhon. Это уже зависит от логики рендеринга.

Самый простой вариант реализации сей оптимизации — хранить не только текущую карту, но и предыдущую. Потом, методом обычного сравнение соответствующих ячеек из текущей и предыдущей карт, перерисовывать только то, что изменилось.

Для данного примера, изменений больше чем «не изменений», и скорость рендеринга работает предельно быстро. Собственно, для данного случае это делать не нужно).
Эх, жизнь была моим hello-world в Qt =)
Пойду откапывать исходники, посмеюсь над кривокодом.
Покажете потом, ок?
Не думаю, что мой старый код окажется интересным, в нём всё было реализовано совсем уж «в лоб», не было так же ни сохранения, ни загрузки. =)
Здорово получилось, конечно можно было бы все сделать совсем по другому, через QGraphicsScene например. Но все равно.
Как я сказал выше — я с QGraphicsScene не работал. Мне роднее рисовать на виджете.
НЛО прилетело и опубликовало эту надпись здесь
Из комбинации лени и логики получаются программисты ©
Я писал проект за 2-3 часа — 4fun. Мне было банально лень использовать алгоритм со списками — за что прошу прощения.
>Еще нужны кнопочки Start, Stop, Clear
Ещё нужны Save и Load
Исправил.
Ух ты… Там в GIT еще и ваша GALACTICA лежит… осталось CONTINENT, KLIGON и ADVENTURES сделать. :)
Вы зря ржете. Вы похоже даже не читали что это за проект. Я его не афишировал еще — но через полгода это будет очень сильный проект. В вкратце это lightweight web developement ide с эвристическим анализом проекта.

А чем вам название не угодило?
Илья, вежливость наше все. Я не увидел насмешники в словах автора вышеуказанного коммента).
Прошу извинение у автора комментария если в этом комментарии не было насмешки.

Просто сколько раз мне уже про галактические компиляторы рассказывали которые, и только они должны мою IDE компилить — это уже рефлекс.
Я не ржу… просто так называлась одна из игр времен ЕС-ЭВМ… если полазить на антресоли, то могу найти вам девятидорожечную бобину для ленточного ES-накопителя с этой игрой… :) Там же есть и CONTINENT, KLIGON и ADVENTURES… Кстати, CONTINENT, предтеча «Цивилизации», чудесно-бы смотрелся рядом с LIVE. Тогда цветных дислеев не было и это вызывало сложности считывания рельефа материков, а сейчас хоть 8 цветов на экране ей бы добавило очарования при полной аутентичной дикости первоисточника…
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории