【问题标题】:How to get steps and current value, after clicking on up/down control of QDoubleSpinBox?单击QDoubleSpinBox的上/下控件后如何获取步数和当前值?
【发布时间】:2014-10-17 16:03:02
【问题描述】:

我的问题是,如何在 spinbox(I required double spinbox (QDoubleSpinBox)) 中的“value”增加/减少之前控制 stepSize 和“currentvalue”?

注意: 我知道,“valueChanged”信号在那里,但是只有在 currentvalue 增加/减少后才会调用 slot

【问题讨论】:

  • IMO 你搞砸了逻辑!为什么你需要在valueChanged 之前更改stepSize?你有什么收获?我很确定你在价值改变后立即知道新的步骤,在新的改变之前很久。也许您还有一些其他数据会对stepSize 产生影响。在这种情况下,可以用不同的方式来解决问题,请提供有关问题的更多详细信息。
  • BTW stepBy 没有定义步长,而是按给定的 步数 执行更改,因此它不会测量步的拼写错误。跨度>
  • 我需要在valueChanged之前更改stepSize,因为我需要使用对数值增量,所以我需要在增量/减量之前更改stepSize。
  • 所以我的回答是好的,我会改进它以考虑新信息。

标签: c++ qt qspinbox


【解决方案1】:

在第二条评论中,我指出您误解了QAbstractSpinBox::stepBy 的功能。

因此,当您继承 QDoubleSpinBox 时,您可以这样做:

void SubclassOfDoubleSpinBox::stepBy(int steps) {
    if (steps>0) {
       if (steps>=10) { // note some events call stepBy with step value 10 or -10
           setSingleStep(incrementStep10());
       } else {
           setSingleStep(incrementStep1());
       }
    } else {
       if (steps<=-10) {
           setSingleStep(decrementStep10());
       } else {
           setSingleStep(decrementStep1());
       }
    }

    QDoubleSpinBox::stepBy(steps);
}

这将使用对数递增递减逻辑完成这项工作。

【讨论】:

    猜你喜欢
    • 2016-06-26
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多