做到了,但是label_3的值的变化很不稳定,而且只能减少,有一种情况是,我减少2时,label_3减少了6,而我在减少2的基础上又增加了1(上限是114),label_3却又减少了4,如何解决
时间: 2024-01-10 13:04:57 浏览: 91
这个问题可能是由于信号和槽函数的连接方式不正确导致的。在你的代码中,updateLabel()槽函数的实现逻辑是:将SpinBox的值转换为字符串,并更新两个标签的文本。但是,你的问题描述中提到了label_3的值不稳定,这似乎表明你的updateLabel()函数实现可能有问题。
我建议你修改updateLabel()函数的实现逻辑,使其能够正确地更新label_3的值。以下是一个可能的实现方法:
```
void menu::updateLabel(int value)
{
QString text = QString::number(value);
ui->label->setText(text);
// 更新 label_3 的文本并保存到配置文件
int stock = ui->label_3->text().split(":").last().toInt();
int newStock = qMax(stock - value, 0); // 计算新的库存量,不允许小于0
if (newStock != stock) {
ui->label_3->setText("库存:" + QString::number(newStock));
QSettings settings("MyApp", "MyApp");
settings.setValue("stock", newStock);
}
}
```
在这个实现中,我们使用qMax()函数计算新的库存量,并确保其不小于0。如果新的库存量和当前库存量不相等,则更新label_3的文本,并将新的库存量储存到配置文件中。
这个实现可能会更加稳定,并且能够正确地处理SpinBox值的变化。如果你还有其他问题,请随时提出。
阅读全文