QT笔记(4)——Qt的lineEdit添加鼠标点击事件

xiaoxiao2021-02-28  61

在写qt ui时候很多控件没有鼠标点击事件,这里以LineEdit为例对其重写类并添加鼠标点击事件;博客参考于:http://www.jyguagua.com/?p=668;

分为三步:

1、重写lineEdit类;

2、在widget中添加对应启动的信号和槽事件;

3、在ui窗口中将linEdit控件提升到重写的类里;

下面为源码:

mylineedit.h

#ifndef MYLINEEDIT_H #define MYLINEEDIT_H #include <QLineEdit> #include<QMouseEvent> class MyLineEdit:public QLineEdit //添加mylineedit类继承QLineEdit { Q_OBJECT public: explicit MyLineEdit(QWidget *parent = 0); ~MyLineEdit(); protected: //添加并重写鼠标点击事件函数 virtual void mousePressEvent(QMouseEvent *e); signals: //点击信号函数 void clicked(); }; #endif // MYLINEEDIT_H

mylineedit.cpp

#include "mylineedit.h" MyLineEdit::MyLineEdit(QWidget *parent):QLineEdit(parent) {} MyLineEdit::~MyLineEdit() {} //重写mousePressEvent事件,检测事件类型是不是点击了鼠标左键 void MyLineEdit::mousePressEvent(QMouseEvent *e) { //如果单击了就触发clicked信号 if (e->button() == Qt::LeftButton) { //触发clicked信号 emit clicked(); } //将该事件传给父类处理 // QLineEdit::mousePressEvent(e); }

widget.h

#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include"mylineedit.h" namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); private: Ui::Widget *ui; private slots: //添加槽函数 void lineEditClicked(); }; #endif // WIDGET_H

widget.cpp

include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); //添加链接,当点击发送到 connect(ui->lineEdit, SIGNAL(clicked()), this, SLOT(lineEditClicked())); } Widget::~Widget() { delete ui; } void Widget::lineEditClicked() { //在处理lineedit clicked函数里我们将lineedit背景色变蓝色 ui->lineEdit->setStyleSheet("background-color:blue"); } 关于lineEdit控件的提升不知为,点击进入窗口ui设计界面——选中lineEdit控件——右键——提升为——在提升类名称里添加刚刚重写的类MyLineEdit,然后选中——提升;

如下图所示:

编辑好后运行后如下,点击lineEdit控件则会变为蓝色:

转载请注明原文地址: https://www.6miu.com/read-71531.html

最新回复(0)