Глава 2 – Философия объектной модели

Философия объектной модели

8 thoughts on “Глава 2 – Философия объектной модели

  1. В листинге 2.11 в обоих методах setMapping() первым аргументом является pcmd1, хотя индийская мне подсказывает, что во втором случае должен быть pcmd2

    1. Спасибо Серафим,
      Вы правы во втором методе setMapping() действительно должно стоять pcmd2.
      В следующих изданиях исправлю

  2. Уважаемый автор, в разделе “Механизм сигналов и слотов” рассказывается о функциях обратного вызова. Правильно ли я понимаю, что данный механизм – это когда в функцию передается указатель на другую функцию (эта другая функция и есть функция обратного вызова)?

  3. Добрый день! Во второй главе говориться “слот может принимать сигналы от многих сигналов, принадлежащим разным объектам”. Хочу уточнить: это он может делать напрямую, то есть через использования метода connect(), когда несколько сигналов подключаются к одному и тому же слоту, или необходимо использовать класс QSignalMapper в качестве “программного разветвителя” для слота? Например, можно в листинге 2.11 не создавать объект QSignalMapper* psigMapper и через него подключать сигналы к одному слоту, а просто вызвать два раза метод connect(), где в качестве слота указать одно и то же значение?

    1. Добрый день Игорь!
      Метода QObject::connect() для соединения сигналов и слотов из разных объектов вполне достаточно класс QSignalMapper используется для удобства чтобы в один слот сразу передать в строковых значений QString. Очень важно понять что в методе connect() мы не передаем значения напрямую, а просто указываем типы посредством, которых будет осуществляться передача данных. Если бы нам нужно было передавать разные значения в один и тот же слот, то они должны были бы доставляться сигналами и это сделало реализацию более громоздкой, например, могло бы понадобится унаследовать классы QPushButton, только для того, чтобы определить свои собственные сигналы, высылающие нужные значения. В случае с QSignalMapper мы можем “напрямую” передать в один и тот же слот различные значения. Надеюсь немного прояснил.

  4. На странице 42

    Из сказанного становится ясно, что не имеет смысла определять сигналы как protected
    private, или puЫic, поскольку они играют роль вызывающих методов.

    Но тут есть тонкость. В Qt 4 сигналы были реализованы через privat, а в Qt 5 поправили и теперь они реализованы через public, что позволяет делать вызов emit obj->method(), а это упращает написание тестов.

Добавить комментарий