QT中的鼠標移動事件


關注

QMouseEvent類
其中還有press事件、release事件、move事件.......

為了練習move事件,做了一個按鈕跟隨鼠標小程序
首先我們可以查閱文檔:
mouseMoveEvent事件,
[virtual protected] void QWindow::mouseMoveEvent(QMouseEvent *ev);
這是一個虛函數,可以用來重載的
我們就在自己的函數中

 

 

 重寫虛函數:

 pbt.move(event->x(),event->y());  //設置按鈕跟隨坐標

 

在按鈕創建需要在類中進行.建立成員函數的方式創建

 

 

 設置PushButton

 

 

 

    //直接打開鼠標事件
    setMouseTracking(true);
-------------------------------------------------------------------------------------------------------
#include "widget.h"
#include "ui_widget.h"
 
        
#include <QMouseEvent>
#include <QDebug>
 
        
 
        
int i = 0;
int j  =0 ;
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
 
        
    resize(800,600);
 
        
    //直接打開鼠標事件
    setMouseTracking(true);
 
         
         
        
 
        
    pbt.setParent(this);
    pbt.setText("歡迎");
 
        
    pbt.move(350,300);
    pbt.resize(80,50);
 
        
}
 
        
void Widget::mouseMoveEvent(QMouseEvent *event)
{
    QString str = QString("鼠標移動了  x = %1 y =%2 ").arg(event->x()).arg(event->y());
    qDebug() <<str;
 
        
        //按鈕移動
    pbt.move(event->x(),event->y());
}
 
        
Widget::~Widget()
{
    delete ui;
}

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

 

 

還有

event->button() ==Qt::LeftButton;   //左鍵;判斷按鍵
event->buttons()   &Qt::LeftButton;   //判斷聯合按鈕


----------------------------------------------------------------------------
重寫void mousePressEvent
重寫void mouseReleaseEvent
這種屬於攔截事件操作,為了不影響其他按鈕寫完要return
return QPushButton::mousePressEvent(e);



 






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM