Qt编程获取鼠标移动事件

想做下面一个效果:想当鼠标移动到按钮上的时候,按钮就变大,图标换个大的,鼠标不在按钮上的时候,按钮就变小,图标也换成小的,感觉比较Cool

实现原理:为每个按钮设置监听属性

void MainHomeForm::init()
{
    //为按钮注册事件
    ui->SystemSetButton->installEventFilter(this);
    ui->ZoneSetButton->installEventFilter(this);
}
//系统监听器监听按钮对象
bool MainHomeForm::eventFilter(QObject *target, QEvent *e)
{
    if(target == ui->SystemSetButton)
    {
        if(e->type() == QEvent::Enter)
        {
            ui->SystemSetButton->resize(163,91);
            QIcon *MouseOnIcon = new QIcon(":/new/prefix1/back/系统设置2.png");
            ui->SystemSetButton->setIcon(*MouseOnIcon);
        }
        else if(e->type() == QEvent::Leave)
        {
            ui->SystemSetButton->resize(115,60);
            QIcon *MouseOffIcon = new QIcon(":/new/prefix1/back/系统设置.png");
            ui->SystemSetButton->setIcon(*MouseOffIcon);
        }
    }
    else if(target == ui->ZoneSetButton)
    {
        if(e->type() == QEvent::Enter)
        {
            ui->ZoneSetButton->resize(163,91);
            QIcon *MouseOnIcon = new QIcon(":/new/prefix1/back/区域控制2.png");
            ui->ZoneSetButton->setIcon(*MouseOnIcon);
        }
        else if(e->type() == QEvent::Leave)
        {
            ui->ZoneSetButton->resize(115,60);
            QIcon *MouseOffIcon = new QIcon(":/new/prefix1/back/区域控制.png");
            ui->ZoneSetButton->setIcon(*MouseOffIcon);
        }
    }
}

搞定,首先绑定按钮的installEventFilter为当前窗体,在窗体的EventFilter事件中,看移到了哪个按钮上面,就可以了。

还有一种就是,当鼠标按下去的时候,移动到按钮上面才会有变化:

//跟踪鼠标移动事件,当鼠标移动到中间的按钮上时,改变图标大小和内容
void MainHomeForm::mouseMoveEvent(QMouseEvent *e)
{
    e->accept();
    if(enterBtn(e->pos(),ui->SystemSetButton))
    {
        ui->SystemSetButton->setSizeIncrement(163,91);
        QIcon *MouseOnIcon = new QIcon(":/new/prefix1/back/系统设置2.png");
        ui->SystemSetButton->setIcon(*MouseOnIcon);
    }
}
//自己写的函数,判断鼠标是否在一个按钮区域内
bool MainHomeForm::enterBtn(QPoint pp, QToolButton *btn)
{
    int height = btn->height();
    int width = btn->width();
    QPoint btnMinPos = btn->pos();
    QPoint btnMaxPos = btn->pos();
    btnMaxPos.setX(btn->pos().x()+width);
    btnMaxPos.setY(btn->pos().y()+height);
    if(pp.x() >= btnMinPos.x() && pp.y() >= btnMinPos.y()
        && pp.x() <= btnMaxPos.x() && pp.y() <= btnMaxPos.y())
        return true;
    else
        return false;
}

Qt编程获取鼠标移动事件,布布扣,bubuko.com

时间: 2024-10-13 21:25:26

Qt编程获取鼠标移动事件的相关文章

JavaScript-4.6鼠标事件监听,获取鼠标坐标window.event---ShinePans

<html> <head> <meta http-equiv="content-type" content="text/html" charset=GB2312"/> <title> 4.5 window.event应用 </title> <script> function body_onclick(){ alert("鼠标点击的坐标是\r\nx:"+event.x

JS获取鼠标左(右)滑事件

鼠标左(右)滑也是网站开发中常见的效果之一,这里对鼠标左(右)滑做出一些解释. 首先要获取需要左右滑事件的节点: eg: var div=document.getElementById("div"); 然后获取点击事件onmousedown并传参: eg: div.onmousedown=function(e){ } 在函数里写一个闭包来判断左右滑,这里需要获取鼠标的坐标,之后进行判断输出结果 eg: div.onmousedown=function(e){ var a1=e.scre

Listbox与dataGridView的获取鼠标点击事件的区别!!!

1 int index = lisxian.IndexFromPoint(e.X, e.Y);//获取鼠标点击 2 lisxian.SelectedIndex = index; Listbox获取鼠标的代码!!!! 1 int index = e.RowIndex; 2 DataGridViewRow currenRow = this.dgvxian3.Rows[index]; dataGridView获取鼠标代码!!!! private void lisxian_SelectedIndexCh

Qt鼠标双击事件mouseDoubleClickEvent(QMouseEvent* event)

重写mouseDoubleClickEvent(QMouseEvent event)* 1.实例:双击窗口时输出"sss" /*widget.h*/ #ifndef WIDGET_H #define WIDGET_H #include<QWidget> #include<QDebug> class Widget : public QWidget { Q_OBJECT public: Widget(QWidget* parent=0); ~Widget(){} p

QT中模拟鼠标点击事件

传入座标,模拟鼠标点击QWebView中网页上的某一点 qDebug()<<"mouse clicked"; QPoint pos(403,34); QMouseEvent event0(QEvent::MouseButtonPress, pos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); QApplication::sendEvent(view->page(), &event0); QMouseEven

BaseTool中鼠标双击事件获取鼠标位置的方法

ArcGISEngine的BaseTool类中提供了鼠标双击.鼠标移动.鼠标按键按下.鼠标按键弹起四种鼠标事件,但是鼠标双击事件的参数跟其他三种不一样,双击事件中没有提供鼠标位置信息. public virtual void OnDblClick(); public virtual void OnMouseDown(int Button, int Shift, int X, int Y); public virtual void OnMouseMove(int Button, int Shift

3D Slicer Modify Mouse Event 修改3D Slicer中的鼠标响应事件

在3D Slicer中,我们如果想在自己写的插件中来修改默认的鼠标响应事件的话,就需要先将原有的响应事件链接删除,然后建立自定义的响应事件链接,然后将自己要实现的功能写在响应事件函数中. 比如Slicer中默认的鼠标左键拖拽,是任意旋转视图中的Camera,默认中的滑轮操作是拉远和拉近视图摄像机,默认的鼠标右键操作也是拉远和拉近视图摄像机的操作.这样滑轮就和鼠标右键的功能重复了,我们可以让鼠标右键实现其他的功能.比如在模型的Pitch, Yaw, Roll三个旋转方向上(其实旋转的只是试图中的摄

JavaScript获取鼠标点击坐标

如何用JavaScript获取鼠标点击时在canvas画布上的坐标呢: 代码如下: -------------------------------------------------------------- 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>demo</title> 6

如何获取鼠标位置

获取鼠标位置,首先需要加载js文件: 然后设置一个div,给定大小: 最后进行具体操作: //首先要先设置一个div,给定大小 <div id="m"></div> //进行操作 <script type="text/javascript"> var x,y,T,L; T=$("#m").offset().top;//div离开左端的距离 L=$("#m").offset().left;//