您好第一次在这里发帖。我搜索并发现重新实现 QSpinBox 类如何允许自定义使用。但是,我不确定我的需求是否与我通过重新实现 validate 方法所发现的一样多。
我需要一个自定义范围,该范围不包括值范围中的零值。微调器用于选择加载图像的缩放比例。设计时的初始范围是 -25 到 10。该范围可能会根据图像的尺寸而变化。尽管如此,我必须能够“跳过”零以获得所需的缩放系数。例如,范围必须始终从 -1 变为 1,反之亦然。
我假设您正在收听QSpinbox::valueChanged(int i)
信号,您可以在此处执行以下操作:
void zoomImage(int i) {
if (i == 0) {
if (lastValue < 0) //if sliding from negative values
spinBox->setValue(1);
else
spinBox->setValue(-1);
return; //skip processing for 0
}
else
lastValue = i; //save last state to a class variable
//processing...
}
EDIT:int lastValue
用于存储滑块在达到 0 之前的位置,以确定用户滑动到负值还是正值
似乎有效的方法:
void MainWindow::zoomImage(int ctlValue)
{
if(ctlValue == 0)
{
if(zoomLastValue < 0)
ui->sbScaleImage->stepBy(1);
else
ui->sbScaleImage->stepBy(-1);
}
zoomLastValue = ui->sbScaleImage->value();
}
抱歉,如果我搞砸了格式。