如何更改QDoubleSpinbox的文本格式?

时间:2014-12-06 14:29:06

标签: python qt pyside qtgui qspinbox

我想以12°15°

的格式在对话框中输入温度

为此,我采用了QDoubleSpinBox小部件,但无法像上面那样设置文本。

我试过以下:

degree_sign= u'\N{DEGREE SIGN}'
temperature = QDOubleSpinBox()
temperature.setSuffix(degree_sign)

并得到12.15°

我认为valueFromText()和textFromValue()可以提供帮助,但不知道如何使用它们。

如何设置QDoubleSpinBox文本(或值)格式,如12°15°?

1 个答案:

答案 0 :(得分:0)

一种方法是从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

免责声明:即使它看起来像是一个编译代码,但工作,但显示了这个概念。