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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: QLineEdit  (Прочитано 11251 раз)
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #15 : Март 28, 2012, 16:42 »

Я тоже за eventFilter)
Это более гибкое решение в данном случае)
Вот именно, что для данного случая. Но с точки зрения проектирования это костыль.
Записан

Qt 5.11/4.8.7 (X11/Win)
Dr.Vlad
Гость
« Ответ #16 : Апрель 02, 2012, 19:36 »

А что делать, если форма уже нарисована (или рисовать ее хочется) в QtDesigner?  Улыбающийся
Свои компоненты туда вставлять.
Кстати, почему это хак? На мой взгляд, хак - использование недокументированных методов. Тут же все легально!

Запросто можно вставить писаный класс вместо оригинального QLineEdit в ui_class.h
(только, естессна, перед сборкой под релиз, поскольку первая же очистка обнулит сие деяние)
или же в конструкторе блок QGridLayout ваять.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #17 : Апрель 02, 2012, 20:17 »

Запросто можно вставить писаный класс вместо оригинального QLineEdit в ui_class.h
запросто можно преобразовать QLineEdit в писаный класс в дизайнере
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Странник
Гость
« Ответ #18 : Апрель 03, 2012, 09:51 »

запросто можно преобразовать QLineEdit в писаный класс в дизайнере
плюсадин. лучше унаследоваться и сигнал прикрутить, чем при каждой необходимости городить eventFilter'ы.
Записан
Dr.Vlad
Гость
« Ответ #19 : Апрель 03, 2012, 20:00 »

class LineEdit : public QLineEdit
{
        Q_OBJECT
public:
        LineEdit( QWidget* parent = 0 ) : QLineEdit( parent ) {}
 
Q_SIGNALS:
        void clicked();
 
protected:
       void mousePressEvent( QMouseEvent* e )
       {
            QLineEdit::mousePressEvent( e );
            emit clicked();
       }
};

Как будто бы здесь eventFilter НЕ используется...

У нас на работе через installEventFilter всё делают,
хотя сама по себе текстовка любопытная, (так или почти так оригинальные troll классы сделаны), запомню.
Записан
Bepec
Гость
« Ответ #20 : Апрель 03, 2012, 22:03 »

Ну как бы этот слот уже определён. А не прогоняет сквозь себя ВСЕ сигналы повторно.
Записан
_OLEGator_
Гость
« Ответ #21 : Апрель 04, 2012, 10:24 »

У нас на работе через installEventFilter всё делают

И это, имхо, не правильно. Этот механизм скорее для тех, кому влом создавать наследника и там обрабатывать все события, а так было бы правильнее.
Записан
andrew.k
Гость
« Ответ #22 : Апрель 05, 2012, 00:25 »

У нас на работе через installEventFilter всё делают

И это, имхо, не правильно. Этот механизм скорее для тех, кому влом создавать наследника и там обрабатывать все события, а так было бы правильнее.
Не влом, а кому это не нужно.
Нормальный стандартный механизм.
Записан
Bepec
Гость
« Ответ #23 : Апрель 05, 2012, 07:11 »

installEventFilter грузит форму и сигналы. Так же при большом количестве обрабатываемых сигналов (свич из 8 спец элементов допустим), становится сборищем пересекающихся условий и непоняток.
Конечно, если все программисты аккуратны, пишут комментарии и не втыкают через пару дней туда новую функцию, всё будет нормально. Но где ж вы таких видели? Веселый
Записан
_OLEGator_
Гость
« Ответ #24 : Апрель 05, 2012, 10:37 »

Не влом, а кому это не нужно.
Нормальный стандартный механизм.

Не нужно = влом. Быстро что-то написать, чтобы работало, наплевав на повторное использование кода. При нормальном проектировании и разработке - надо отдельный класс писать и логику встраивать в него, а не мешать все в кучу. Такой коробочный элемент может быть легко повторно использован.
Конечно, наверняка есть ситуации, когда использование installEventFilter оправдано, но в данном случае это как раз противопоказано.
Записан
andrew.k
Гость
« Ответ #25 : Апрель 05, 2012, 10:54 »

Не влом, а кому это не нужно.
Нормальный стандартный механизм.
Конечно, наверняка есть ситуации, когда использование installEventFilter оправдано, но в данном случае это как раз противопоказано.
Вот именно. Это полноценный метод со своими плюсами и минусами.
Просто начало формироваться мнение, что это какой-то ущербный подход. Словно это GOTO, который есть, но лучше не ипользовать.
Это не так.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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