いくつかのタスクに関して、私は次のことをしなければなりません。0 から 1000 までの正の値を持つ QDoubleSpinBox があるとします。ユーザーがスピンボックスの値を下げようとするたびに、値が 0 のときに下ボタンをクリックすると、スピンボックスの値は文字列「未設定」でなければなりません。スピンボックスの値をクリアしてからsetPrefixを設定するために、これを実行しようとしました。しかし、うまくいきませんでした。他の解決策はありますか?
2646 次
3 に答える
10
試すことができspecialValueText
ます。
これは例です:
#include <QApplication>
#include <QDoubleSpinBox>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QDoubleSpinBox doubleSpinBox;
doubleSpinBox.setRange(0.f, 1000.f);
doubleSpinBox.setValue(1.f);
doubleSpinBox.setSpecialValueText("unset");
doubleSpinBox.show();
return a.exec();
}
値が 0 の場合、スピンボックスの値は文字列 "unset" でなければなりません。
于 2014-11-14T08:40:28.170 に答える
6
あなたが望むものを達成するための2つの解決策があります。
他の答えの pezy のように、スピンボックスの現在の value() == minimum() のときにテキストが表示されるsetSpecialValueTextを使用する
またはもう少し強力: QSpinBox をサブクラス化し、次の関数をオーバーライドします。
int valueFromText(const QString &text) const;
QString textFromValue(int value) const;
QValidator::State validate(QString & input, int & pos) const;
ここを見て、似たようなQSpinBox enter NaN as valid value を試してみてください。
于 2014-11-14T08:25:12.490 に答える
-1
QSpinBox をサブクラス化し、動作を定義します。
この例を見てください
于 2014-11-14T08:26:57.747 に答える