如何更改 QDoubleSpinbox 的文本格式?
Posted
技术标签:
【中文标题】如何更改 QDoubleSpinbox 的文本格式?【英文标题】:How to change text format of QDoubleSpinbox? 【发布时间】:2014-12-06 14:29:06 【问题描述】:我想以 12°15° 的格式在对话框中输入温度
为此,我使用了 QDoubleSpinBox 小部件,但无法像上面那样设置其文本。
我尝试了以下操作:
degree_sign= u'\NDEGREE SIGN'
temperature = QDOubleSpinBox()
temperature.setSuffix(degree_sign)
得到 12.15°
我认为 valueFromText() 和 textFromValue() 可以提供帮助,但不知道如何使用它们。
如何设置 QDoubleSpinBox 文本(或数值)格式,如 12°15°?
【问题讨论】:
等一下,12°15°
是什么?那是真正的温度格式吗?如果是这样,你为什么不从 QDS 继承?
@lpapp 12°15° 表示 12.15 度。我想要这种格式的温度。请提供 QDS 的示例或一些链接。
那么为什么不是 12.15°?这是由一些当地标准定义的吗?
@lpapp 是它的本地标准
【参考方案1】:
一种方法是从 QDoubleSpinBox 继承并在此伪代码中覆盖各自的方法,如下所示:
main.cpp
#include <QDoubleSpinBox>
#include <QApplication>
class MySpinBox : public QDoubleSpinBox
Q_OBJECT
public:
explicit MySpinBox(QWidget *parent = 0) : QDoubleSpinBox(parent)
double valueFromText(const QString & text) const
QString valueText = text;
valueText.chop(1);
valueText.replace("°", ".");
return valueText.toFloat();
QString textFromValue(double value) const
QString valueText = QString::number(value);
valueText.replace(".", "°");
valueText.append(".");
return valueText;
;
#include "main.moc"
int main(int argc, char **argv)
QApplication application(argc, argv);
MySpinBox mySpinBox;
mySpinBox.show();
return application.exec();
main.pro
TEMPLATE = app
TARGET = main
QT += widgets
SOURCES += main.cpp
构建并运行
qmake && make && ./main
免责声明:尽管它看起来像一个编译代码,但它确实不工作,但显示了这个概念。
【讨论】:
我已将所有代码转换为 python 除了这一行QString valueText = QString::number(value);
我试图将其转换为 valueText = str(value)
但它给出了错误
我将代码转换为 pyqt 但 qdoublespinbox 显示 0.
是的,这就是我将答案标记为伪代码的原因。概念已经存在,您需要对其进行微调。
是的,我将它修改为 0°00° def valueFromText(self, text): valueText = QString() valueText = text valueText.chop(1) valueText.replace(degree_sign,".") return t.toFloat() def textFromValue(self, value): valueText = QString.number(value, format='f', precision=2) valueText.replace(".", degree_sign) valueText.append(degree_sign) return valueText
点击它只会增加第一个值。我无法修改第二个值。给点提示。还告诉在哪里学习重写 Qt 小部件
@Patrick:请read the documentation。默认步长是 1.0,这就是原因。你需要改变它。以上是关于如何更改 QDoubleSpinbox 的文本格式?的主要内容,如果未能解决你的问题,请参考以下文章