如何更改QDoubleSpinbox的文本格式?

2024-10-01 04:50:59 发布

您现在位置:Python中文网/ 问答频道 /正文

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

为此,我使用了QDoubleSpinBox小部件,但不能像上面那样设置它的文本。在

我试着跟着:

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

得到12.15°

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

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


Tags: 文本部件格式温度对话框temperaturesigndegree
1条回答
网友
1楼 · 发布于 2024-10-01 04:50:59

一种方法是从QDoubleSpinBox继承,并在这个代码中重写相应的方法:

在主.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();
}

在主.pro

^{pr2}$

构建并运行

qmake && make && ./main

免责声明:尽管它看起来像是一个编译代码,但它并不工作,而是展示了概念。在

相关问题 更多 >