Мегасофт за месяц или рожденный ползать. День двадцать первый.

Что день грядущий нам готовит....


11.00
Как всегда вовремя на работу… Недопрограммисту срочно понадобилось посмотреть дерево. Показал. А когда бы я ему еще и картинки вставить успел…
11.30
Отлично напротив объектов появились картинки. Посмотрим как отрабатывает дабл клик…
После двойного нажатия на имя группы.
Ух ты давно тагого не видел. Access Violation. притом где?

                        uint time= currentData.Time;
               

хм…
через 2 минуты поиска проблемы.
Еманарот.
currentData = model->data(model->index(index.row(),3,QModelIndex())).value();
uint time = currentData.Time;
Теперь ясно зачем был нужен тот выброшенный код. Ему что, было лениво написать проверку? И вообще нахрена это держать внутри модели если оно нигде не используется. Исправим…
2 минуты после фикса
Второй аксес. на этот раз парой строк ниже. Мда… тяжко придется… теперь строка выглядит так
pCenteringCar=model->data(model->index(index.row(),4,QModelIndex())).value<MapCar>();

далее естесна обращение к этому объеку, который является не тем чем кажется…
Интересно, а это то нахрена в модели…
12.00
Показал дерево с картинками. Сказал, что надо бы классы вынести куда-нть, все-таки они общие для всех. Наткнулся на выпученные глаза…
13.00
Целый час мне пытались объяснить, что я сделал неправильно. Оказываеся не должно быть тех классов. ВСЕ (подчеркнуто) должно храниться в модели. и при изменении модели это должно отражаться везде… Интересно модель показываю я, зачем она другим. Может я чего не дочитал… Задумался.
14.00
За этот час мне пытались показать какие то примеры, не относящиеся к задачи почти никак, лишь за тем исключением что это были модели. Про то как это реализовано в коде не было сказано ни слова. Все мои попытки что-либо объяснить не увенчались успехом. В результате я разрушил ВСЁ(три раза подчеркнуто) представление о Model View (боже как легко рушатся идеалы), и получил замечательную фразу « Я сам все сделаю!». ну и прекрасно! делай! Ради собсвенного интереса сел ковырять это все дальше. Задача проста: при двойном клике по объекту надо сменить его картинку и вернуть старую тому, тому, по которому дважды дали крысой прошлый раз.
14.30
По кликнутому объекту картинка меняется. Но если тот же объект находится в другой группе то у него картинка меняется когда на него встанешь.
15.00
Что-то я еще не обедал.
15.40
Обед был чудесным, настроение стало таким же. Пойду выпью чайку.
16.00
Ладно надо заканчивать с этими картинками.
16.20
Сцуко. Как же достал этот программист-самоучка-недоучка. Как я ему сделаю такую модель…
18.20
Два часа рисовал схемы, пытался объяснить, что для того, чтобы модель менялась надо или проводить функции или подписываться на некие события, и все равно получал вопрос «Но это же можно держать в модели». Мда… Тут даже основами не пахнет… Все должно запихиваться в модель методом setData… нужно оно для отображения или нет…
18.40
Слава богу отвалил. Надо закончить с тем, что начал. Задумался над случившимся…
19.00
Задача проста, надо найти все индексы где расположен объект и обновить его визуальное отображение.
19.30
Пора домой, но хочется закончить. Открыл хелп по QAbstractItemModel. У него оказывается есть метод match который мне все и найдет.
19.40
Почитаем еще раз как он работает.
20.00
Ура! Теперь все прекрасно работает. Обновляется везде где надо и как надо. Хоть и понервничал за день зато горд собой. Все! Домой!
  • +6
  • 26 августа 2009, 00:09
  • Hill

Комментарии (11)

RSS свернуть / развернуть
+
0
вообще надо сделать легкое лирическое отступление тут.
тип MapCar — это некий объект, который отображется на карте, а мы работаем с treeview.
Теперь насчет Model View и вообще моделей в QT (то, что я понимал на тот момент)
Model View — это способ представления данных, по большей части визуальный. Данные могу быть представлены в виде таблицы, дерева,сетки и т.д. Все зависит от фантазии. можно использовать стандартные классы для построения таких моделей, можно делать свои, что я и пытался тут сделать…
avatar

Hill

  • 26 августа 2009, 00:17
+
0
молодец, садись, пять!
avatar

NetCoder

  • 26 августа 2009, 00:18
+
+1
А самопальные связаные списки применялись?
avatar

SSkuratov

  • 26 августа 2009, 09:21
+
+1
Qt — Прикольная штука.
Я бы хотел изучать это, но у меня сейчас совсем не до этого
avatar

webdesigner

  • 26 августа 2009, 00:49
+
+1
и зря! это значит что управление рабочим графиком поставлено неверно
avatar

NetCoder

  • 26 августа 2009, 01:01
+
+3
Не скажу, что я мозг в с++ и qt(раньше и не знал точно). Но в этой хитрой конторе нормальный софт на нем никогда не напишут(для начала нужно изучить и понимать, что делаешь), а не тырить код с Marble и показывать на презентации: «Вот смотрите как круто, я потратил лето на это и это гениально!». И если бы не два человека, кто до этого писали на С++ софт «программисту-самоучке-недоучке» нечего было бы показывать, т.к. все Ctrl+C -> Ctrl+V.
И держалось все на одном больном на голову, но один из лучших в городе c#-писте, привет ему кстати.
Прикольная контора, когда я там работал «программист-самоучка-недоучка» почти каждый день!!! спрашивал как посмотреть размер винта(папки) в Linux-е и постоянно его идеи перекидывали меня с одного на другое(лично мне уже тогда было все равно, лучше бы я играл в Дюну).
Короче, как сказали при увольнении «да пусть хоть все программисты свалят, наберем ещё мартышек, не страшно»…
avatar

chipset

  • 26 августа 2009, 06:39
+
0
:)
avatar

NetCoder

  • 26 августа 2009, 07:37
+
+1
Больному на голову респект!
avatar

robertino

  • 26 августа 2009, 08:59
+
+2
Вот оно как всё, оказывается, интересно! Забавно всё сложилось после моего ухода. Не уж то Арго 2003 так и продают?! Хм.
avatar

SSkuratov

  • 26 августа 2009, 09:16
+
+1
Когда-то в этой конторе были отличные времена… Эх, вспоминаю… 2000-2005…
А потом пришли новые руководятлы, менеджеры среднего звена…
avatar

SSkuratov

  • 26 августа 2009, 09:47
+
+1
Мне больше помнятся 2003-2004 года. Когда 2003 арго писалось. А прыгание с проекта на проект было всегда. По 5-10 раз на день. Но зато это выработало полезное качество — очень быстро врубаться в проект, даже если он незнакомый и быстро выходить на хорошие показатели.
avatar

robertino

  • 26 августа 2009, 09:56

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.