Qt: Lambdas или приватные методы для обработки сигнальных слотов? - PullRequest
0 голосов
/ 25 июня 2019

Я работаю над реализацией приложения с использованием шаблона Model-View-Presenter.

Несмотря на то, что докладчик может просто переслать несколько сигналов (просто connect, используя соответствующие сигналы и слоты между моделью и видом), он все же должен подвергнуться некоторой незначительной обработке некоторых сигналов, например,

Presenter::Presenter(Model* model, View* view, int treshold)
    : m_model(model), m_view(view), m_criticalValueTreshold(treshold)
{
    // can directly connect those
    connect(m_model, &Model::valueChanged, m_view, &View::updateValue);

    // need to check value in case it exceeds the treshold to tell user
    connect(m_model, &Model::criticalValueChanged, this, [this](int criticalValue),
    {
         m_view.updateCriticalValue(value);
         if (criticalValue > m_criticalValueTreshold)
             m_view.notifyUser();
    });
}

Я мог бы напрямую использовать лямбду, но, видя, как я также получаю доступ к значениям членов класса Presenter, я не могу не задаться вопросом, не следует ли мне включить лямбду в правильную (частную) функцию и connect для что вместо этого.

Какой подход был бы лучше (или вообще)?

...