QT 中的 64 位 int Spin Box
我正在构建一个 Windows 程序,该程序应具有 64 位数值的控件。这些控件应可切换为签名或未签名。
我发现了两个控件: “旋转盒”(int32) 和“双旋转盒”(double) 使用 double 我可以覆盖范围,但它无法处理精度。
有没有办法改变这些控件的数据类型?
是否可以创建一个自己的控件来处理有符号和无符号 64 位值? 是否可以创建 128 位 Spin 盒子?
我现在能看到的唯一解决方法是使用字符串控件并手动转换为 INT64 或 UINT64,但我对此解决方案不太满意
还有其他想法吗?
我在 QT 4.7.4 和 VS2010 上使用 C++ 谢谢
I'm building a windows program which shall have controls for 64bit numeric values. these controls shall be switchable to be signed or unsigned.
I found two controls:
"Spin Box"(int32) and "Double Spin Box"(double)
with double I'd be able to cover the range but it can't handle the precision.
Is there a way to change the data type of these controls?
Is it possible to create an own control which can handle signed and unsigned 64bit values?
Is it possible to create a 128bit Spin box?
The only work around I can see right now is in using a string control and manually convert to an INT64 or UINT64 but I'm not very happy with this solution
Any other Ideas?
I'm on QT 4.7.4 and VS2010 with C++
thx
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以派生
QAbstractSpinBox
并至少重新实现虚拟函数stepBy
、stepEnabled
以及可能的validate()
和fixup()
用于输入验证。You can derive
QAbstractSpinBox
and reimplement at least the virtual functionsstepBy
,stepEnabled
and possiblyvalidate()
andfixup()
for the input validation.我不使用修复功能。请参阅我的 Сustom QSpinBox 的代码。
类 QLongLongSpinBox 派生自 QAbstractSpinBox
不要忘记
在创建 QLongLongSpinBox 后调用。
参见qlonglongspinbox.h文件:
I don't use fixup function. See code of my Сustom QSpinBox.
class QLongLongSpinBox derived from QAbstractSpinBox
Don't forget call
after creating QLongLongSpinBox.
see qlonglongspinbox.h file:
要在 Qt Creator 中使用自定义类(小部件):
新晋级班级:
QWigdet
提升的类名称 QLongLongSpinBox
头文件:编写qlonglongspinbox.h
升级
您可以看到
:
在 *.ui 文件中
,在 ui_*.h 生成文件中您可以看到您的类:
To use you custom class (Widget) it in Qt Creator:
New Promoted Class:
QWigdet
Promoted class name QLongLongSpinBox
Header file: write qlonglongspinbox.h
Promote
You can see
and:
in *.ui file
in ui_*.h generating file you see you class:
只是为了完整起见:每次遇到这样的问题时,请记住(以防万一其他一切都失败)您可以下载 Qt 源代码并制作自己的
QSpinBox64
或通过修改所需的部分,只需几分钟即可完成 QSpinBox128
类。Just for the sake of completeness: every time you run into a problem like this, remember that (in case everything else fails) you can just download the Qt source code and make your own
QSpinBox64
orQSpinBox128
class in a matter of minutes by modifying the needed parts.