【问题标题】:Temporarily use integers with QDoubleSpinBox使用 QDoubleSpinBox 暂时使用整数
【发布时间】:2016-12-15 13:53:31
【问题描述】:

假设我有一整组旋转框、组合框等等,我可以在其中为应用程序设置各种变量;一个控制面板,如果你愿意的话。其中之一是QDoubleSpinBox *dec,通常情况下,我使用它应该是小数,但是有一个特定的组合框可以动态启用/禁用一些旋转框和组合框,具体取决于所选条目。其中一项更改使用了 dec 旋转框,仅在此时,需要将其限制为整数值和增量。

例如,如果dec 通常具有0.00..99.99 范围并且增量为0.1,当我在控制组合框中选择某个条目时,我需要dec 在同一范围内(@ 987654327@ 很好),但只发出整数,并且只能通过整数步长进行更改(即范围为0..99,步长为1)。

虽然我发现(Qt 初学者)我可以简单地将 setDecimals()setSingleStep() 强制用于组合框中的特定条目,但事实证明我必须全部使用它们才能恢复更改,可以添加到代码中。有没有更好的解决方案?

【问题讨论】:

  • 如果您的旋转框突然不再允许双打,我会说它在概念上有所不同,应该用普通的整数旋转框代替。如果需要,您可以让两个旋转框共存,然后在需要时使用 hide()show()
  • 实际上,这不是一个糟糕的解决方案,即使它仍然需要为所有其他组合条目调用 hide()show() 来恢复(就像 setDecimals()setSingleStep()) .添加这个作为答案,如果没有人会提供其他任何东西,与我丑陋的黑客相比,这是一个更好的实现。
  • 您使用setDecimalssetSingleStep 的解决方案简单明了。另一种方法是堆叠多个小部件并同步它们的值:这是更多的工作。

标签: qt combobox qspinbox


【解决方案1】:

如果您的旋转框突然不再允许双打,我会说它在概念上有所不同,应该用普通的QSpinBox 代替整数。

您可以让两个旋转框共存,然后在需要时使用hide()show()。 这也避免了在intdouble 之间连续转换。

【讨论】:

  • 虽然我仍然认为这是一个可行的选择,正如@KubaOber 指出的那样(我自己也发现了),但两者之间的同步也需要额外的努力,所以我只是做了一个有条件的,这使得它在选择特定组合条目时适当地使用setDecimals()setSingleStep()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-10
  • 2018-05-11
  • 2021-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多