Все, я дошел до предела.
Не могу осилить очередную ступеньку в доработке проекта MyTetra. Релиза небыло уже 4 года. Я застрял, и дальше двигаться не могу. Проблема в том, что мне не с кем посоветоваться. В моем окружении нет ни одного программиста, который бы писал на C++ и тем более знал Qt4/5. Черт возьми, да в моем окружении вообще нет ни одного программиста! Я живу в полной профессиональной изоляции.
Сейчас мне нужно переделать в MyTetra пару моделей и вид так, чтобы вид смог показывать сортированные данные. Я собрался это делать через proxy модель. Этот вопрос я уже поднимал здесь и здесь и здесь. Но если использовать proxy модель, то нужно, чтобы source модель была чистая, с реализациями только стандартных методов QAbstractTableModel. Но из-за этого полностью ломается вся концепция моделей.
В моем понимании модель - это такой класс, который позволяет сделать с данными все что ты хочешь, используя удобный для конкретных данных интерфейс. Хочешь удалить данные по списку индексов - пожалуйста! Хочешь добавить сразу несколько строк с данными в любое место? На тебе метод. Хочешь по номеру строки или по QModelIndex получить всю строку - да не вопрос.
Но в Qt получается, что в модели можно только читать/менять данные в ячейках (data/setData), добавлять/удалять строчки и столбцы (insertRows/removeRows) и... все! Конечно, этими базовыми методами можно полностью управлять данными, но тогда всю логику по работе с данными придется реализовывать в виде, который использует такую примитивную модель. Но это же неправильно. Вид должен давать модели простые и емкие команды управления данными, а уж модель сама с ними разбираться. И к тому же, с моделью может взаимодействовать не только вид, но и например объект буфера обмена, со своими требованиями и закидонами. В общем, имеем взаимоисключающие параграфы.
Я уже понял, что обсуждением в текстовом виде (переписка) много чего не решишь. Текст - это медленно, и то что можно сказать за минуту, пишется за десять. Мне нужно пообщаться со знающим человеком голосом.
Исходники: https://github.com/xintrea/mytetra_dev
Лютое бесцельное безумие начиная с коммита 4f9d3ce.
Прошу отписаться на емайл xintrea[сцобакка]gmail.com или в асю 115519OOO (заменить три буквы О на нули) идейных товарищей, которые готовы пообщаться по вышеприведенным вопросам голосом. Напишите в письме время, когда вы готовы поговорить (на рабочей неделе могу только вечером, после 18:00 по Москве, в выходные - по договоренности), напишите предпочитаемые средства связи. Для оперативной координации звонка по Skype/SIP/Viber не помешал бы номер мобильного телефона.
PS:
Что я штудировал, но просветление не пришло:
1. Официальная документация
2. Qt4: Программирование моделей и представлений. Подробное объяснение на русском языке.
http://webhamster.ru/mytetrashare/index/mtb0/1392580691nchkxju7yz
3. Программирование моделей в Qt - рекомендации по использованию, неочевидные моменты
http://webhamster.ru/mytetrashare/index/mtb0/14259955927q5bhzmfbg
4. Беседы о Qt: Парадигма Model-View
http://webhamster.ru/mytetrashare/index/mtb0/14064861764k4dumxivg
5. Модели-Посредники в Qt
http://webhamster.ru/mytetrashare/index/mtb0/1432497788j6rq3ufits