Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.137.221.163] |
|
Сообщ.
#1
,
|
|
|
Добрый день.
Подскажите, а то никак понять не могу. Есть форма на ней разные элементы: QGroupBox в них QLineEdit, все это внутри панелей. А QLineEditEx у меня потомок от QLineEdit. В нем я обрабатываю сигнал TextChanged и нужно послать сигнал ФОРМЕ! о том что текст изменился. А после вызова parent() он дает указатели на QGroupBox. Пытался использовать QApplication::activeWindow() но тоже не работает. При попытке передать в класс QLineEditEx указатель на ФОРМУ происходит крах. |
Сообщ.
#2
,
|
|
|
Здесь есть ошибка в проектировании структуры SIGNAL-SLOT. Из того, что есть необходимость обработки сигнала в дочернем виджете, не вытекает необходимость делать производный класс от типа этого виджета
QLineEdit * le = new QLineEditEx(); connect (le, &QLineEdit::textChanged, this, &<Тип формы>::<нужный слот> ); |
Сообщ.
#3
,
|
|
|
Мне из класса нужно послать сигнал о том, что содержимое изменилось. А так я раньше просто в форме определял обработку textChanged каждого текстового элемента, но вот подумалось что проще в классе один раз прописать чем делать десятки вызовов это функции.
|
Сообщ.
#4
,
|
|
|
Не проще, на форме может быть куча дочерних виджетов, которые сами могут содержать уже свои дочерние виджеты, уровень вложенности не ограничен. Наследование от QLineEdit с расширенной обработкой определенного сигнала базового класса приводит к тому, что сигнал будет обработан в самом классе, а последующие слоты уже могут быть не задействованы. Таким образом в обработчике сигнала, прописанном в QLineEditEx, после обработки снова делать emit textChanged, что в свою очередь может привести к рекурсии.
|
Сообщ.
#5
,
|
|
|
Извиняюсь, еще раз все перепроверил и оказалось что QApplication::activeWindow() нормально получает сигнал об изменении. Виной всему моя не внимательность
|
Сообщ.
#6
,
|
|
|
Цитата YuriyRusinov @ тоже хотела так написать, а потом смотрю, мой союзник |