Qt实现密码显示按钮

这篇文章主要为大家详细介绍了Qt实现密码显示按钮,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Qt实现密码显示按钮的具体代码,供大家参考,具体内容如下

PasswordLineEdit.h

#ifndef PASSWORDLINEEDIT_H #define PASSWORDLINEEDIT_H #include  #include  #include  class PasswordLineEdit : public QLineEdit { public:   PasswordLineEdit(QWidget *parent = nullptr); private slots:   void onPressed();   void onReleased(); protected:   void enterEvent(QEvent *event);   void leaveEvent(QEvent *event);   void focusInEvent(QFocusEvent *event);   void focusOutEvent(QFocusEvent *event); private:   QToolButton *button; }; #endif // PASSWORDLINEEDIT_H

PasswordLineEdit.cpp

#include "passwordlineedit.h" PasswordLineEdit::PasswordLineEdit(QWidget *parent) : QLineEdit(parent) {     setEchoMode(QLineEdit::Password);     QAction *action = addAction(QIcon(":/eyeOff"), QLineEdit::TrailingPosition);     button = qobject_cast(action->associatedWidgets().last());     button->hide();     button->setCursor(QCursor(Qt::PointingHandCursor));     connect(button, &QToolButton::pressed, this, &PasswordLineEdit::onPressed);     connect(button, &QToolButton::released, this, &PasswordLineEdit::onReleased); } void PasswordLineEdit::onPressed() {     QToolButton *button = qobject_cast(sender());     button->setIcon(QIcon(":/eyeOn"));     setEchoMode(QLineEdit::Normal); } void PasswordLineEdit::onReleased() {     QToolButton *button = qobject_cast(sender());     button->setIcon(QIcon(":/eyeOff"));     setEchoMode(QLineEdit::Password); } void PasswordLineEdit::enterEvent(QEvent *event) {     button->show();     QLineEdit::enterEvent(event); } void PasswordLineEdit::leaveEvent(QEvent *event) {     button->hide();     QLineEdit::leaveEvent(event); } void PasswordLineEdit::focusInEvent(QFocusEvent *event) {     button->show();     QLineEdit::focusInEvent(event); } void PasswordLineEdit::focusOutEvent(QFocusEvent *event) {     button->hide();     QLineEdit::focusOutEvent(event); }

main.cpp

#include "passwordlineedit.h" #include  #include  int main(int argc, char *argv[]) {     QApplication a(argc, argv);     QWidget w;     PasswordLineEdit *w1 = new PasswordLineEdit;     QLineEdit *w2 = new QLineEdit;     QFormLayout *lay = new QFormLayout(&w);     lay->addRow("PasswordLineEdit: ", w1);     lay->addRow("QLineEdit: ", w2);     w.show();     return a.exec(); }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持0133技术站。

以上就是Qt实现密码显示按钮的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » C语言