qt - 带有一组预定义值的 Qt QSpinBox
问题描述
我有一个QSpinBox
应该只接受一组离散值(比如说 2、5、10)。我可以setMinimum(2)
,setMaximum(10)
但我不能,setSingleStep
因为我有 3 步和 5 步之一。
我可以使用不同的小部件,但它的 UI 与QSpinBox
?
如果没有,我应该覆盖什么才能达到预期的效果?
解决方案
用于QSpinBox::stepsBy()
处理值。
例如:
class Spinbox: public QSpinBox
{
public:
Spinbox(): QSpinBox()
{
acceptedValues << 0 << 3 << 5 << 10; // We want only 0, 3, 5, and 10
setRange(acceptedValues.first(), acceptedValues.last());
}
virtual void stepBy(int steps) override
{
int const index = std::max(0, (acceptedValues.indexOf(value()) + steps) % acceptedValues.length()); // Bounds the index between 0 and length
setValue(acceptedValues.value(index));
}
private:
QList<int> acceptedValues;
};
推荐阅读
- bash - 变量在被赋值后在 bash 脚本中为空
- sql - 基于几何和最近的时间戳 BigQuery SQl 连接表
- python - Python-如何将文本分成段落?
- java - Flux 和 Mono 的用例
- python - 如果相同的对应行值为空,如何从重复列中获取值
- cypress - 无法在带有类型脚本的 cypress 中使用自定义命令
- c++ - 如何将 + 和 += 运算符重载为非成员函数?
- python - Django模型排序通过自定义算法使用当前时间和创建时间之间的差异
- flutter - 在 Flutter 中结合 itemBuilder 和 StickyHeader
- flutter - Flutter 登录背景图 Flutter_login 包