Комментарии 14
Для начала сразу скажу, что код не соответствует Qt coding conventions, поправьте.
Во вторых можно обойтись static_cast'ом вместо dynamic_cast'а. Во всём Qt почти не используют dynamic_cast. С ним есть некоторые сложности при разработки библиотек.
Во вторых можно обойтись static_cast'ом вместо dynamic_cast'а. Во всём Qt почти не используют dynamic_cast. С ним есть некоторые сложности при разработки библиотек.
+1
Одним из недостатков данного виждета является то что он завязан на QTableView (это обусловлено тем, что именно для этого он мне и был нужен), хотя его можно было бы использовать для других типов представлений. Если будет время и желание я решу и этот вопрос.
Я думаю можно с минимальным количеством изменений расширить до QAbstractItemView
0
Пост отличный, но в скриншоте все же что-то режет глаз.
![](https://habrastorage.org/r/w1560/storage2/bbe/3a7/fe0/bbe3a7fe004163ef7cf60b1b3918ba46.png)
![](https://habrastorage.org/storage2/bbe/3a7/fe0/bbe3a7fe004163ef7cf60b1b3918ba46.png)
-1
Просто субпиксельное сглаживание шрифтов, включенное у автора, не подходит к вашему монитору.
0
А, я понял, вы о несовпадении линии таблицы.
+1
К шрифтам никаких претензий. На линии таблицы посмотрите.
+1
Простите мне пой праздный интерес, но вы часто так приближаете?
0
Костылями даже не просто пахнет. Вот они!
1. Что за решение — кнопка/(гуи виджет) управляет моделью??? Этим должен заниматься контроллер и только! Мало ли кейсов будет, в которых должны добавляться ячейки!
2. «Можно было бы перегрузить QTableView, но тогда придется изменять все инстансы»
С какого перепугу?
3. А вот почему костыль — вместо перегрузки используется дополнительный виджет, который лезет в ивент фильтр и подменяет часть функционала контроллера.
нельзя такое в продакшн…
1. Что за решение — кнопка/(гуи виджет) управляет моделью??? Этим должен заниматься контроллер и только! Мало ли кейсов будет, в которых должны добавляться ячейки!
2. «Можно было бы перегрузить QTableView, но тогда придется изменять все инстансы»
С какого перепугу?
3. А вот почему костыль — вместо перегрузки используется дополнительный виджет, который лезет в ивент фильтр и подменяет часть функционала контроллера.
нельзя такое в продакшн…
+1
Не понимаю.
1) Кнопка и есть контроллер же.
2) С такого перепуга что вместо
3) Что значет подменяет
1) Кнопка и есть контроллер же.
2) С такого перепуга что вместо
view = new QTableView()
везде view = new QTableViewWithButtons()
3) Что значет подменяет
0
1.а) А вот вы захотели использовать вашу так красиво нарисованную кнопку в другом месте. Будете делать еще 1 класс, или захотите все же использовать готовое? А если функционал контроля модели вам больше не нужен? Оставите «чтоб было»?
1.б) А вот вам нужна функция «добавить строку» в обработчике, скажем, генератора таблиц истинности О_О. Будете вызвыать методы ваших гуишных кнопок? Как? Будете создавать виджет и прятать его?
Дальнейшее использование в иных кейсах невозможно, а это криво.
2) Слыхали о такой штуке — refactor? В три клика и один копипаст вашь проект уже работает с новым классом.
3) Кнопка должна только работать с интерфейсами и не должна изменять другие объекты. Смотрите п.1. По поводу ивент фильтра я был не прав. Почему-то подумал, что он в классе кнопки написан.
1.б) А вот вам нужна функция «добавить строку» в обработчике, скажем, генератора таблиц истинности О_О. Будете вызвыать методы ваших гуишных кнопок? Как? Будете создавать виджет и прятать его?
Дальнейшее использование в иных кейсах невозможно, а это криво.
2) Слыхали о такой штуке — refactor? В три клика и один копипаст вашь проект уже работает с новым классом.
3) Кнопка должна только работать с интерфейсами и не должна изменять другие объекты. Смотрите п.1. По поводу ивент фильтра я был не прав. Почему-то подумал, что он в классе кнопки написан.
0
1.а) не могу себе представить как ещё можно использовать данную кнопку и в каком месте, её назначение в том чтобы вертеть модель, пылесосить и заваривать кофе она не может и не должна.
1.б) если мне нужно будет добавить строку я возьму модель и через неё добавлю строку, при чем здесь гуй вообще?
2) objection! Слыхали о такой штуке как ui файлы, создаваемые визуальным редактором, в них придется лазать руками и менять, что кстати приведет к тому что в редакторе они будут смотреться уже не так.
3) модель это и есть интерфейс структуры которую она контролирует, если попытаться написать интерфейс к модели весьма вероятно получится точно такая же модель.
1.б) если мне нужно будет добавить строку я возьму модель и через неё добавлю строку, при чем здесь гуй вообще?
2) objection! Слыхали о такой штуке как ui файлы, создаваемые визуальным редактором, в них придется лазать руками и менять, что кстати приведет к тому что в редакторе они будут смотреться уже не так.
3) модель это и есть интерфейс структуры которую она контролирует, если попытаться написать интерфейс к модели весьма вероятно получится точно такая же модель.
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Qt виджет для добавления и удаления строк в таблицe QTableView