屏蔽QLineEdit文本

时间:2011-01-11 22:11:05

标签: pyqt4

我正在使用PyQt4 QLineEdit小部件来接受密码。有setMasking属性,但不遵循如何设置屏蔽字符。

5 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:8)

PyQt4或Qt4中setMasking没有QLineEdit属性。你在谈论setInputMask()吗?如果你是,这不会做你认为它做的事情。它设置验证输入的掩码。

要使控件隐藏键入的内容,请使用setEchoMode()方法,该方法将(应该)显示平台的标准密码隐藏字符。从我在文档中看到的内容来看,如果要显示自定义字符,则需要派生一个新类。但总的来说,这是一个坏主意,因为它违背了用户期望的内容。

答案 2 :(得分: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一无所知;它似乎没有被包裹在那里,所以你被卡住了,除非你想自己包装它。

问候

答案 3 :(得分:2)

正如文档所说http://doc-snapshot.qt-project.org/4.8/stylesheet-examples.html#customizing-qlineedit

  

可以使用以下方式设置具有QLineEdit :: Password echo模式的行编辑的密码字符:

QLineEdit[echoMode="2"] {
    lineedit-password-character: 9679;
}

答案 4 :(得分:1)

在Qt Designer中

选择行编辑,然后在“属性编辑器” 窗口中,会有一个属性echoMode,您可以将其设置为Password

使用python代码

在这种情况下,反地球的答案将起作用:

myLineEdit.setEchoMode(QLineEdit.Password)