我只想更新Qsettings中的值,而使用connect语句更改Qlineedit只意味着我不想在Qsettings中为更新值创建任何函数。
答案 0 :(得分:2)
最简单的方法是使用新的信号/槽语法(https://wiki.qt.io/New_Signal_Slot_Syntax) lambda表达式作为槽。我不确定您使用的是哪种类型的小部件,因为 QLineEdit 没有 valueChanged 信号(只有 textChanged 信号),所以我假设你必须使用 QSpinBox 。以下是两种情况的示例代码( QLineEdit 和 QSpinBox )
connect(ui->lineEdit, &QLineEdit::textChanged, [=](const QString& str)
{
QSettings().setValue("attribute",str);
});
connect(ui->spinBox, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int val)
{
QSettings().setValue("numAttribute",val);
});