Pull to refresh

Comments 14

Для начала сразу скажу, что код не соответствует Qt coding conventions, поправьте.
Во вторых можно обойтись static_cast'ом вместо dynamic_cast'а. Во всём Qt почти не используют dynamic_cast. С ним есть некоторые сложности при разработки библиотек.
Спасибо за замечание, убрал rtti.
Одним из недостатков данного виждета является то что он завязан на QTableView (это обусловлено тем, что именно для этого он мне и был нужен), хотя его можно было бы использовать для других типов представлений. Если будет время и желание я решу и этот вопрос.


Я думаю можно с минимальным количеством изменений расширить до QAbstractItemView
Пост отличный, но в скриншоте все же что-то режет глаз.

Просто субпиксельное сглаживание шрифтов, включенное у автора, не подходит к вашему монитору.
А, я понял, вы о несовпадении линии таблицы.
К шрифтам никаких претензий. На линии таблицы посмотрите.
Простите мне пой праздный интерес, но вы часто так приближаете?
Никогда так не приближаю специально. Просто листал главную и взгляд сам остановился на скриншоте. Рассмотрев его чуть детальнее сразу понял что в нем не так, без всяких увеличений. Хотя возможно я излишне требователен — к теме поста эта деталь никоим образом отношения не имеет.
Костылями даже не просто пахнет. Вот они!
1. Что за решение — кнопка/(гуи виджет) управляет моделью??? Этим должен заниматься контроллер и только! Мало ли кейсов будет, в которых должны добавляться ячейки!
2. «Можно было бы перегрузить QTableView, но тогда придется изменять все инстансы»
С какого перепугу?

3. А вот почему костыль — вместо перегрузки используется дополнительный виджет, который лезет в ивент фильтр и подменяет часть функционала контроллера.

нельзя такое в продакшн…
Не понимаю.
1) Кнопка и есть контроллер же.
2) С такого перепуга что вместо view = new QTableView() везде view = new QTableViewWithButtons()
3) Что значет подменяет
1.а) А вот вы захотели использовать вашу так красиво нарисованную кнопку в другом месте. Будете делать еще 1 класс, или захотите все же использовать готовое? А если функционал контроля модели вам больше не нужен? Оставите «чтоб было»?
1.б) А вот вам нужна функция «добавить строку» в обработчике, скажем, генератора таблиц истинности О_О. Будете вызвыать методы ваших гуишных кнопок? Как? Будете создавать виджет и прятать его?

Дальнейшее использование в иных кейсах невозможно, а это криво.

2) Слыхали о такой штуке — refactor? В три клика и один копипаст вашь проект уже работает с новым классом.

3) Кнопка должна только работать с интерфейсами и не должна изменять другие объекты. Смотрите п.1. По поводу ивент фильтра я был не прав. Почему-то подумал, что он в классе кнопки написан.
1.а) не могу себе представить как ещё можно использовать данную кнопку и в каком месте, её назначение в том чтобы вертеть модель, пылесосить и заваривать кофе она не может и не должна.
1.б) если мне нужно будет добавить строку я возьму модель и через неё добавлю строку, при чем здесь гуй вообще?
2) objection! Слыхали о такой штуке как ui файлы, создаваемые визуальным редактором, в них придется лазать руками и менять, что кстати приведет к тому что в редакторе они будут смотреться уже не так.
3) модель это и есть интерфейс структуры которую она контролирует, если попытаться написать интерфейс к модели весьма вероятно получится точно такая же модель.
Отстаивать свое решение — хорошо.
Однобоко смотреть — плохо.

Второго тут излишне.
Sign up to leave a comment.

Articles