2011-01-11 3 views
5

나는 암호를 받아 PyQt4 QLineEdit 위젯을 사용하고 있습니다. setMasking 속성이 있지만 마스킹 문자를 설정하는 방법은 없습니다.마스킹 QLineEdit 텍스트

답변

7

는 PyQt4 또는 QT4 중 하나에 QLineEdit에 대한 setMasking 특성이 없습니다. setInputMask()에 대해 이야기하고 있습니까? 당신이 있다면, 이것은 당신이 생각하는 것처럼 보이지 않습니다. 입력의 유효성을 검사 할 마스크를 설정합니다.

입력 내용을 숨길 수있는 컨트롤을 얻으려면 setEchoMode() 메서드를 사용하십시오. 그러면 플랫폼에 대한 표준 암호 숨김 문자가 표시됩니다. 설명서에서 볼 수 있듯이 사용자 정의 문자를 표시하려면 새 클래스를 파생해야합니다. 그러나 일반적으로 이것은 사용자가보기를 기대하기 때문에 바람직하지 않습니다.

3

Qt를 사용하면 매우 쉽습니다. QStyle :: SH_LineEdit_PasswordCharacter 상수를 쿼리 할 때마다 새 스타일을 정의하고 styleHint 메서드에서 새 문자를 반환해야합니다. 아래의 예는 다음과 같습니다

class LineEditStyle : public QProxyStyle 
{ 
public: 
    LineEditStyle(QStyle *style = 0) : QProxyStyle(style) { } 

    int styleHint(StyleHint hint, const QStyleOption * option = 0, 
        const QWidget * widget = 0, QStyleHintReturn * returnData = 0) const 
    { 
     if (hint==QStyle::SH_LineEdit_PasswordCharacter) 
      return '%'; 
     return QProxyStyle::styleHint(hint, option, widget, returnData); 
    } 
}; 

lineEdit->setEchoMode(QLineEdit::Password); 
lineEdit->setStyle(new LineEditStyle(ui->lineEdit->style())); 

이제 문제 PyQt는이 QProxyStyle에 대해 아무것도 아는 것 같은데하지 않는다는 것입니다; 그것은 당신이 그것을 포장하고 싶지 않다면, 거기에 싸여 있지 않은 것처럼 보입니다, 그래서 당신은 붙어 있습니다.

관련

14
editor = QLineEdit() 
editor.setEchoMode(QLineEdit.Password)