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

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

免責事項: コンパイル コードのように見えますが、機能しませが、概念を示しています。

于 2014-12-06T16:10:09.263 に答える