zoukankan      html  css  js  c++  java
  • 添加鼠标移入移出事件

    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);
    }
    --------------------- 

  • 相关阅读:
    前端小tite(随笔)
    算法两数之和 python版
    常用标签
    pip install 遇到的问题
    不常用的模块
    约束和约束关系
    Django初识
    前端—Bootstrap
    前端—jQuery
    前端—BOM和DOM
  • 原文地址:https://www.cnblogs.com/ly570/p/11277955.html
Copyright © 2011-2022 走看看