class mylineedit: public QLineEdit
{
Q_OBJECT
public:
mylineedit();
explicit mylineedit(QWidget *parent = 0);
protected:
//重写mousePressEvent事件
void mousePressEvent(QMouseEvent *event) override;
void keyPressEvent(QKeyEvent *event) override;
void contextMenuEvent(QContextMenuEvent* event) override;
signals:
//自定义clicked()信号,在mousePressEvent事件发生时触发
void clicked();
public slots:
};
mylineedit::mylineedit(QWidget *parent) :
QLineEdit(parent)
{
setEchoMode(QLineEdit::Password);
}
//重写mousePressEvent事件,检测事件类型是不是点击了鼠标左键
void mylineedit::mousePressEvent(QMouseEvent *event)
{
//如果单击了就触发clicked信号
if (event->button() == Qt::LeftButton)
{
//触发clicked信号
emit clicked();
}
//将该事件传给父类处理
QLineEdit::mousePressEvent(event);
}
void mylineedit::contextMenuEvent(QContextMenuEvent *event)
{
Q_UNUSED(event);
}
void mylineedit::keyPressEvent(QKeyEvent *event)
{
if(event->matches(QKeySequence::SelectAll) || event->matches(QKeySequence::Copy) || event->matches(QKeySequence::Paste) || event->matches(QKeySequence::Cut))
{
return;
}
QLineEdit::keyPressEvent(event);
}
调试窗口
#CONFIG += console