關注
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);