2011-01-11 9 views
5

Sto usando il widget PyQt4 QLineEdit per accettare la password. Esiste una proprietà setMasking, ma non segue come impostare il carattere di mascheramento.Masking QLineModifica testo

risposta

7

Non esiste la proprietà setMasking per QLineEdit in PyQt4 o Qt4. Stai parlando di setInputMask()? Se lo sei, questo non fa quello che pensi di fare. Imposta la maschera su cui convalidare l'input.

Per ottenere il controllo per nascondere ciò che viene digitato, utilizzare il metodo setEchoMode(), che visualizzerà (dovrebbe) il carattere di occultamento della password standard per la piattaforma. Da quello che posso vedere dalla documentazione, se vuoi che un personaggio personalizzato venga visualizzato, dovrai ricavarne una nuova classe. In generale, tuttavia, questa è una cattiva idea, poiché va contro ciò che gli utenti si aspettano di vedere.

3

È abbastanza semplice utilizzare Qt: è necessario definire un nuovo stile e restituire un nuovo carattere dal metodo styleHint ogniqualvolta viene interrogata la costante QStyle :: SH_LineEdit_PasswordCharacter. Di seguito è un esempio:

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())); 

ora il problema è che pyqt non sembra sapere nulla su QProxyStyle; sembra non essere avvolto lì, quindi sei bloccato, a meno che tu non voglia avvolgerlo da solo.

riguarda

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