添加鼠标移入移出事件

Posted ly570

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了添加鼠标移入移出事件相关的知识,希望对你有一定的参考价值。

mylabel.cpp

#include "mylabel.h"

MyLabel::MyLabel(QWidget* parent) :QLabel(parent)


MyLabel::~MyLabel()


void MyLabel::enterEvent(QEvent *e)

setText("Ok, mouse is on");

void MyLabel::leaveEvent(QEvent *e)

setText(" ");

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "mybutton.h"

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)

ui->setupUi(this);

button1= new MyButton(this);
button2= new MyButton(this);
button1->setText("one");
button2->setText("two");
button1->setGeometry(QRect(200,200,80,30)); //设置位置和大小
button2->setGeometry(QRect(300,200,80,30));//设置位置和大小
button1->show(); //显示控件
button2->show(); //显示控件

myLabel= new MyLabel(this);
myLabel->setStyleSheet("background-color:rgb(100,150,150)"); //设置背景颜色
myLabel->setGeometry(QRect(100,100,300,80)); //设置位置和大小
myLabel->show(); //显示控件

MainWindow::~MainWindow()

delete ui;

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
main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])

QApplication a(argc, argv);
MainWindow w;
w.show();

return a.exec();

1
2
3
4
5
6
7
8
9
10
11
最后实现的效果如图,鼠标在按钮上时按钮上字体颜色为黄色,鼠标不在按钮上时按钮字体为黑色;鼠标在myLabel上时显示文字,不在时不显示。
(貌似截屏没有显示出鼠标指针位置)

 

Promote to 方法: 上面是只用代码的方法,也可以用提升(promote to)的方法,比如在写好了mylabel.h和mylabel.cpp文件后,在UI界面上添加一个QLabel控件(因为MyLabel类继承自QLabel),然后右键单击该控件,选择"promote to":

输入自己新建的类,以及该类所在的头文件,点击”Add“,勾选复选框,再点击右下角 Promote

可以看到它的类别已经成了MyLabel类:

为方便观察,我们可以把背景颜色改一下(去掉了文字):

结果如图:


还存在的问题:如果我把按钮或者QLabel的鼠标事件函数里写上setVisuable(true)和setVisuable(false),就是让控件显示或者消失,就会出现指针移动时闪烁的问题。
比如改动一下:

mylabel.cpp

#include "mylabel.h"

MyLabel::MyLabel(QWidget* parent) :QLabel(parent)


MyLabel::~MyLabel(http://www.my516.com)


void MyLabel::enterEvent(QEvent *e)

setVisuable(false);

void MyLabel::leaveEvent(QEvent *e)

setVisuable(true);

--------------------- 

以上是关于添加鼠标移入移出事件的主要内容,如果未能解决你的问题,请参考以下文章

jQuery链式调用、鼠标移入移出、轮播、键盘事件

认清鼠标移入移出事件

jquery鼠标移入移出

vue中鼠标移入移出,怎么让其切换到里面的内容

javascript鼠标移入移出事件

鼠标移入移出事件