На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! Правила раздела *nix / gcc / Eclipse / Qt / wxWidgets / GTK+
  • При создании темы ОБЯЗАТЕЛЬНО указывайте версию тулкита / библиотеки / компилятора.
  • Перед тем как задать вопрос, сформулируйте его правильно, чтобы вас могли понять.
  • Нарушение Правил может повлечь наказание со стороны модераторов.


Полезные ссылки:
user posted image Boost по-русски
user posted image Qt по-русски
Модераторы: archimed7592, Flex Ferrum, JoeUser
  
> Qt, как получить указатель на окно
    Добрый день.
    Подскажите, а то никак понять не могу. Есть форма на ней разные элементы: QGroupBox в них QLineEdit, все это внутри панелей. А QLineEditEx у меня потомок от QLineEdit. В нем я обрабатываю сигнал TextChanged и нужно
    послать сигнал ФОРМЕ! о том что текст изменился. А после вызова parent() он дает указатели на QGroupBox. Пытался использовать QApplication::activeWindow() но тоже не работает. При попытке передать в класс QLineEditEx указатель на ФОРМУ происходит крах.
    Сообщение отредактировано: Sander -
      Здесь есть ошибка в проектировании структуры SIGNAL-SLOT. Из того, что есть необходимость обработки сигнала в дочернем виджете, не вытекает необходимость делать производный класс от типа этого виджета
      ExpandedWrap disabled
        QLineEdit * le = new QLineEditEx();
        connect (le, &QLineEdit::textChanged, this, &<Тип формы>::<нужный слот> );
      С наилучшими пожеланиями,
      Юрий Русинов.
        Мне из класса нужно послать сигнал о том, что содержимое изменилось. А так я раньше просто в форме определял обработку textChanged каждого текстового элемента, но вот подумалось что проще в классе один раз прописать чем делать десятки вызовов это функции.
          Не проще, на форме может быть куча дочерних виджетов, которые сами могут содержать уже свои дочерние виджеты, уровень вложенности не ограничен. Наследование от QLineEdit с расширенной обработкой определенного сигнала базового класса приводит к тому, что сигнал будет обработан в самом классе, а последующие слоты уже могут быть не задействованы. Таким образом в обработчике сигнала, прописанном в QLineEditEx, после обработки снова делать emit textChanged, что в свою очередь может привести к рекурсии.
          С наилучшими пожеланиями,
          Юрий Русинов.
            Извиняюсь, еще раз все перепроверил и оказалось что QApplication::activeWindow() нормально получает сигнал об изменении. Виной всему моя не внимательность :)
              Цитата YuriyRusinov @

              тоже хотела так написать, а потом смотрю, мой союзник
              1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script Execution time: 0,0716 ]   [ 15 queries used ]   [ Generated: 17.11.19, 09:56 GMT ]