【发布时间】:2019-09-21 18:51:56
【问题描述】:
假设我有一个包含Button 和Spinbox 的小部件。单击按钮时,我希望发出 Spinbox 的值。
我看到了两种可能的方法:
我可以创建一个私有成员函数
//...
connect(m_Button, &QPushButton::clicked, this, &SomeWidget::emitSpinboxValue);
//...
SomeWidget::emitSpinboxValue() {
emit spinboxValueChanged(m_Spinbox->value());
}
或者我可以直接在 lambda 中执行此操作:
//...
connect(m_Button, &QPushButton::clicked, [this]() { emit spinboxValueChanged(m_Spinbox->value()) });
//...
lambda 方式看起来更整洁(因为我不需要创建一个相当空的成员函数),但另一方面,看到 lambda 中的 emit 让我有一种不好的感觉。
那么,是在 lambda 中发出信号好吗(我的直觉过于敏感),还是它的风格不好(或者我什至会为将来遇到一些意想不到的麻烦做好准备)
【问题讨论】: