2

我想以 12°15° 的格式在对话框中输入温度

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

我试过以下:

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

得到12.15°

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

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

4

1 回答 1

0

一种方法是从 QDoubleSpinBox 继承并在此伪代码中覆盖相应的方法,如下所示:

主文件

#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();
}

主程序

TEMPLATE = app
TARGET = main
QT += widgets
SOURCES += main.cpp

构建并运行

qmake && make && ./main

免责声明:尽管它看起来像一个编译代码,但它不起作用但显示了这个概念。

于 2014-12-06T16:10:09.263 回答