2014-11-14 13 views
3

일부 작업에 대해서는 다음을 수행해야합니다. 0에서 1000 사이의 양수 값을 가진 QDoubleSpinBox가 있다고 가정하십시오. 사용자가 스핀 상자 값을 낮추려고 시도 할 때마다, f.e. 값이 0 일 때 아래쪽 버튼을 클릭하려면 spinbox의 값이 문자열 "unset"이어야합니다. 나는 spinbox의 값을 지우고 setPrefix를하기 위해 이것을 시도했다. 그러나 그것은 효과가 없었습니다. 다른 솔루션?문자열을 QDoubleSpinBox로 설정하십시오.

+1

흠 있지만 QDoubleSpinBox 부동 소수점 수를 표시한다. 그러나 문자열을 설정하고 싶습니까? 스핀 상자와 함께 라벨을 사용하는 것이 더 좋은 아이디어일까요? – vahancho

답변

9

시도해 볼 수 있습니다 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, spinbox의 값이 문자열 "해제"해야합니다 :

은 예입니다.

+2

좋은 기능 : Qt를 꽤 오래 사용해 본 적이 없다고 생각하지 않았습니다. 팁 주셔서 감사! – Robert

5

은 당신이 원하는 것을 달성하기 위해 두 가지 해결책이 있습니다. 텍스트가 표시되는 경우 다른 대답 pezy로서

setSpecialValueText를 사용 말할 때 전류 값() == 최소값()을 spinbox

또는 좀더 강력한 : 서브 QSpinBox과 같은 기능을 재정의

int valueFromText(const QString &text) const; 
QString textFromValue(int value) const; 
QValidator::State validate(QString & input, int & pos) const; 

비슷한 것을 시도해보십시오. QSpinBox enter NaN as a valid value.

-1

하위 클래스 QSpinBox과 당신의 행동을 정의합니다.
이것 좀 봐 example