0

ウィンドウに4つのダブルスピンボックスがあります。このダブルスピンボックスに固定幅の値を表示したい。たとえば、ダブルスピンボックスの範囲が0〜100.00の場合、常に000.00の形式で値を表示したいので、値は8ですが、ダブルスピンボックスでは008.00と表示されるはずです。同様に、値の編集中にダブルスピンボックスの各桁を強調表示したいと思います。どうすれば同じことができますか?。幅/範囲はすべてのスピンボックスで異なります。誰かが私を助けることができますか?

4

2 に答える 2

1

@asclepix の投稿へのコメントで述べたように、再実装する必要がありますtextFromValue。このスニペットは私にとってはうまくいきます。

class MyDoubleSpinBox : public QDoubleSpinBox
{
public:
    explicit MyDoubleSpinBox(QWidget *parent = 0) : QDoubleSpinBox(parent) {
        setMaximum(999.99);
    }

    QString textFromValue(double val) const {
        const int width = 6;        // length of whole number in symbols '000.00'
        const int precision = 2;    // after separator

        // rightJustified to add leading zeroes
        return QLocale().toString(val, 'f', precision).rightJustified(width, '0');
    }
};
于 2013-03-06T10:45:16.240 に答える
0

末尾のゼロを強制するには setDecimals を使用し、先頭のゼロには setPrefix を使用する必要があると思います。問題は、doublespinbox の値に応じてプレフィックスを変更する必要があることです。簡単な方法は、スロットを valueChanged シグナルに接続し、そこでジョブを実行することです。あまり単純ではない方法は、doublespinBox をサブクラス化することですが、何を再実装すればよいかわかりません。

于 2013-03-06T08:26:35.247 に答える