2011-01-11 37 views
5

私はPyQt4 QLineEditウィジェットを使ってパスワードを受け入れています。 setMaskingプロパティがありますが、マスキング文字を設定する方法には従いません。マスクQLineEditテキスト

答えて

7

QLineEditのプロパティは、PyQt4またはQt4のいずれにもありません。setMaskingsetInputMask()について話していますか?あなたがそうであれば、これはあなたが思っていると思われることをしません。入力を検証するマスクを設定します。

入力を隠すようにコントロールを取得するには、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) 
関連する問題