2011-01-11 14 views

Odpowiedz

7

Brak właściwości setMasking dla QLineEdit w PyQt4 lub Qt4. Czy mówisz o setInputMask()? Jeśli tak, to nie robi tego, co wydaje się, że to robi. Ustawia maskę, która służy do sprawdzania poprawności danych wejściowych.

Aby uzyskać kontrolę ukrywania wpisanego tekstu, należy użyć metody setEchoMode(), która będzie (powinna) wyświetlać standardowy znak ukrywania haseł platformy. Z tego, co widzę w dokumentacji, jeśli chcesz, aby wyświetlany był niestandardowy znak, musisz wyprowadzić nową klasę. Generalnie jednak jest to zły pomysł, ponieważ jest sprzeczny z oczekiwaniami użytkowników.

3

To całkiem proste przy użyciu Qt: musisz zdefiniować nowy styl i zwrócić nowy znak z metody styleHint, gdy kwerenda jest stała QStyle :: SH_LineEdit_PasswordCharacter. Poniżej znajduje się przykład:

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

Problem polega na tym, że pyqt nie ma pojęcia o QProxyStyle; wydaje się, że nie jest tam owinięty, więc utknąłeś, chyba że sam chciałbyś go owinąć.

pozdrowienia

14
editor = QLineEdit() 
editor.setEchoMode(QLineEdit.Password) 
Powiązane problemy