Russian Qt Forum
Ноябрь 01, 2024, 04:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3]   Вниз
  Печать  
Автор Тема: doubleClick по чекбоксу во вьюхе  (Прочитано 19786 раз)
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #30 : Март 16, 2016, 14:44 »

изменить пару строк
Так а код плохо читается и с нарушением инкапсуляции. Ну сравните...
Код
C++ (Qt)
       switch (e->type()) {
           case QEvent::MouseButtonDblClick:
               break;
           default:
               return false;
       }
 

Код
C++ (Qt)
       if (e->type() != QEvent::MouseButtonDblClick){
           return false;
       }
 
Спасибо, конечно, за уделённое время. Позже постараюсь разгрести его и примерить на View. Сейчас работает как требуется.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #31 : Март 16, 2016, 15:01 »

Так а код плохо читается и с нарушением инкапсуляции. Ну сравните...
Просто сразу заряжено на большее число событий.

Спасибо, конечно, за уделённое время. Позже постараюсь разгрести его и примерить на View.
Не нравится, хотелось лихо проскочить парой строчек (ну пятком) Улыбающийся А тут какая-то длинная возня... Ну что поделаешь, бывает и так (и часто). И не "гребите" в сторону наследования, фильтр гибче. 
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #32 : Март 16, 2016, 18:43 »

И не "гребите" в сторону наследования, фильтр гибче. 
Только наследование позволяет получить законченный компонент, в отличие от соплей из фильтров событий.
А уж какие чудеса возможны, когда кто угодно устанавливает фильтры на что угодно. Улыбающийся Ты ждешь событие от мышки, а оно не приходит...  Шокированный А потом оказывается, что где то далеко, кто-то поставил фильтр и уже сам об этом забыл.

2__Heaven__ Фильтр событий это костыль, который позволяет сделать много, но использовать его стоит в крайнем случае.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #33 : Март 16, 2016, 19:12 »

Спасибо за предупреждение.
У меня класс вьюхи уже наследован. Так что я собираюсь заниматься только перегрузкой. Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #34 : Март 17, 2016, 11:29 »

Спасибо за предупреждение.
У меня класс вьюхи уже наследован. Так что я собираюсь заниматься только перегрузкой. Улыбающийся
Это квалифицируется как "не плодите сущностей". Пока табличка одна - все прекрасно, наследование выглядит более капитально. Но как только то же самое потребуется в другой... Правда до этого еще надо дожить  Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #35 : Март 17, 2016, 11:44 »

Пока табличка одна - все прекрасно, наследование выглядит более капитально.
Это всегда более капитально. Когда появятся новые таблички, достаточно взять законченную и спокойно использовать, а не вспоминать, какой костылец нужно добавить, что бы заработало и здесь.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #36 : Март 17, 2016, 12:05 »

Это всегда более капитально. Когда появятся новые таблички, достаточно взять законченную и спокойно использовать,
Таблицы имеют совершенно разную "начинку", поэтому наследовать одну от другой - утопия. Делать общий базовый класс (в который свалить такие вещи) - возможно, но он выглядит довольно бестолково, по существу - набор "утилей". Ну так лучше и признать это, отказавшись от липового наследования
...а не вспоминать, какой костылец нужно добавить, что бы заработало и здесь.
Почему "костылец"? Наоборот, удобно и гибко. А чтобы "не забыть" - можно напр так
Код
C++ (Qt)
void InitMyTreeWidget( QTreeWidget * tree )
{
tree->viewport()->installEventFilter(..)
// тут еще найдется что делать
}
Надо стремится к сокращению числа классов (а не фильтров)
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #37 : Март 17, 2016, 12:12 »

Надо стремится к сокращению числа классов (а не фильтров)
Это большое заблуждение. Улыбающийся
Для чего использовать C++, если все пихать в один класс MainWindow?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #38 : Март 17, 2016, 12:13 »

но он выглядит довольно бестолково
Для вас это выглядит бестолково, потому что вы не используете С++, а используете С с классами. Это разные языки и разные подходы.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #39 : Март 17, 2016, 12:27 »

какая-то длинная возня...
бывает и так (и часто)
Скорее всего именно из-за этого подхода Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #40 : Март 17, 2016, 13:13 »

Скорее всего именно из-за этого подхода Улыбающийся
А вот "подпевать" нехорошо Улыбающийся Есть лучшее решение - предъявляем, а то о "подходах" всякий калякать горазд.
Записан
Страниц: 1 2 [3]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.152 секунд. Запросов: 23.