gpt4 book ai didi

c++ - QDoubleSpinBox 在值和显示之间进行缩放

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:40:40 26 4
gpt4 key购买 nike

我正在尝试编写一个自定义的 QDoubleSpinBox 子类,它在其内部值和显示值之间有一个比例因子/函数。这样做的目的是支持以不同单位显示相同的内部值(例如,允许用户选择是显示米、毫米还是英寸,但始终以米存储实际值)。

重写 QDoubleSpinBox::textFromValue 非常简单,可以缩放内部值并附加一个单位符号。但是 valueFromText()validate() 方法有很多 internal logic强制执行最小/最大界限。由于这些与用户使用的单位系统不同,因此限制了用户使用不正确的最小值和最大值。

理想情况下,我想避免重新实现/复制和粘贴所有这些内部私有(private)逻辑,只是为了在从文本解析值时实现值的缩放。有没有人对如何避免这种情况有任何建议?

最佳答案

我建议您看一下 QDataWidgetMapper。 它包含一个模型,它可以与显示值不同。它通常在您拥有多个小部件时使用,但也可用于一个单独的小部件。

Qt 有一个例子展示了如何使用它: http://doc.qt.io/qt-5/qtwidgets-itemviews-simplewidgetmapper-example.html

您必须创建一个QStandardItemModel 并指定您希望它容纳多少行/列。在 QDoubleSpinBox 的情况下,它可以只是一列。然后您可以监听模型中的变化并相应地更新您的 View (即 QDoubleSpinBox)。

它高度可定制且易于使用。

关于c++ - QDoubleSpinBox 在值和显示之间进行缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51436590/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com