本文实例为大家分享了Qt实现密码显示按钮的具体代码,供大家参考,具体内容如下
PasswordLineEdit.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#ifndef PASSWORDLINEEDIT_H #define PASSWORDLINEEDIT_H #include <QAction> #include <QLineEdit> #include <QToolButton> 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#include "passwordlineedit.h" PasswordLineEdit::PasswordLineEdit(QWidget *parent) : QLineEdit(parent) { setEchoMode(QLineEdit::Password); QAction *action = addAction(QIcon( ":/eyeOff" ), QLineEdit::TrailingPosition); button = qobject_cast<QToolButton *>(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<QToolButton *>(sender()); button->setIcon(QIcon( ":/eyeOn" )); setEchoMode(QLineEdit::Normal); } void PasswordLineEdit::onReleased() { QToolButton *button = qobject_cast<QToolButton *>(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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#include "passwordlineedit.h" #include <QApplication> #include <QFormLayout> 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(); } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/TM1695648164/article/details/119686737