2014-03-24 9 views
2

따라서 QSpinBox가 있고 int 값뿐만 아니라 문자열도 기록 할 유효성 검사를 설정 해제하고 싶습니다. 이 문제를 해결하도록 도와주세요. 나는이 시도했다, 그러나 그것은 작동하지 않습니다QSpinBox에서 유효성 검사 사용 안 함

class Spinbox:public QSpinBox 
{ 
public: 

    Spinbox(QWidget* parent=0) 
     :QSpinBox(parent){} 
    void setLineEdit(QLineEdit *l) 
    { 
     QSpinBox::setLineEdit(l); 
    } 
}; 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    Spinbox de; 
    QLineEdit le; 
    le.setValidator(0); 
    le.setText("text"); 
    de.setLineEdit(&le); 
    de.show(); 

    return a.exec(); 
} 

답변

2

Qt는 워드 프로세서 말을한다 :

QLineEdit이 :: lineEdit에 대한 검증()가 0을 반환하면 spinbox의 내부 검증 행 편집에서 설정됩니다.

따라서 QSpinBox에 내장 된 검사기를 사용하지 않으려면 자체 (더미?)를 설정해야합니다. 나는.

class Validator : public QValidator 
{ 
public: 
    State validate(QString &input, int &pos) const 
    { 
     return QValidator::Acceptable; 
    } 
}; 

[..] 

Spinbox de; 
QLineEdit le; 
le.setValidator(new Validator()); 
le.setText("text"); 
de.setLineEdit(&le); 
de.show(); 
+0

다시 작동하지 않지만 여전히 문자열로 편집 할 수 없습니다. –

+0

@EduardRostomyan은 QIntValidator 대신 사용자 고유의 유효성 검사기를 사용합니다. – vahancho

+0

@EduardRostomyan, 내 대답을 업데이트하고 행 편집에서 아무 것도 설정할 수있는 더미 유효성 검사기를 추가했습니다. – vahancho