Qt:Lambda还是用于信号插槽处理的专用方法?

时间:2019-06-25 12:51:12

标签: c++ qt lambda signals-slots

我正在使用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();
    });
}

我可以直接使用lambda,但是看到我也如何访问Presenter类的成员值,我忍不住想知道是否不应该将lambda设置为适当的(私有)函数和{{1} }代替。

这里(或一般而言)有什么更好的方法?

0 个答案:

没有答案