博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt笔记——Event
阅读量:7143 次
发布时间:2019-06-29

本文共 4724 字,大约阅读时间需要 15 分钟。

#ifndef MYBUTTON_H#define MYBUTTON_H#include 
class MyButton : public QPushButton{ Q_OBJECTpublic: explicit MyButton(QWidget *parent = nullptr);protected: void mousePressEvent(QMouseEvent *e);signals:public slots:};#endif // MYBUTTON_H
#include "mybutton.h"#include 
#include
MyButton::MyButton(QWidget *parent) : QPushButton(parent){}void MyButton::mousePressEvent(QMouseEvent *e){ if(e->button() == Qt::LeftButton) { qDebug()<<"left mousebutton"; e->ignore(); } else { QPushButton::mousePressEvent(e); }}
#ifndef MYLABEL_H#define MYLABEL_H#include 
class mylabel : public QLabel{ Q_OBJECTpublic: explicit mylabel(QWidget *parent = nullptr);protected: void mousePressEvent(QMouseEvent *ev); void mouseReleaseEvent(QMouseEvent *ev); void mouseMoveEvent(QMouseEvent *ev); void enterEvent(QEvent *); void leaveEvent(QEvent *);signals:public slots:};#endif // MYLABEL_H
#include "mylabel.h"#include 
#include
mylabel::mylabel(QWidget *parent) : QLabel(parent){ this->setMouseTracking(true);}void mylabel::mousePressEvent(QMouseEvent *ev){ int i = ev -> x(); int j = ev -> y();// QString str = QString("abc %1 ^_^ %2").arg(123).arg("hello"); if (ev->button() == Qt::LeftButton) { }else if(ev->button() == Qt::RightButton) { }else if(ev->button() == Qt::MiddleButton) { } QString text = QString("

Mouse Press: (%1, %2)

") .arg(i).arg(j); this->setText(text);}void mylabel::mouseReleaseEvent(QMouseEvent *ev){ QString text = QString("

Mouse Release: (%1, %2)

") .arg(ev -> x()).arg(ev -> y()); this->setText(text);}void mylabel::mouseMoveEvent(QMouseEvent *ev){ QString text = QString("

Mouse Move: (%1, %2)

") .arg(ev -> x()).arg(ev -> y()); //this->setText(text);}void mylabel::enterEvent(QEvent *e){ QString text = QString("

Mouse enter

"); this->setText(text);}void mylabel::leaveEvent(QEvent *e){ QString text = QString("

Mouse leave

"); this->setText(text);}
#ifndef MYWIDGET_H#define MYWIDGET_H#include 
namespace Ui {class MyWidget;}class MyWidget : public QWidget{ Q_OBJECTpublic: explicit MyWidget(QWidget *parent = 0); ~MyWidget();protected: void keyPressEvent(QKeyEvent *event); void timerEvent(QTimerEvent *event); void closeEvent(QCloseEvent *event); bool eventFilter(QObject *watched, QEvent *event);private: Ui::MyWidget *ui; int timerId; int timerId2;};#endif // MYWIDGET_H
#include "mywidget.h"#include "ui_mywidget.h"#include 
#include
#include
MyWidget::MyWidget(QWidget *parent) : QWidget(parent), ui(new Ui::MyWidget){ ui->setupUi(this); timerId = this->startTimer(1000); timerId2 = this->startTimer(500); connect(ui->pushButton,&MyButton::clicked, [=]() { qDebug()<<"press now"; }); ui->label_2->installEventFilter(this);}void MyWidget::keyPressEvent(QKeyEvent *event){ qDebug()<<(char)(event->key()); if (event->key() == Qt::Key_A) { qDebug()<<"Qt::Key_A"; }}void MyWidget::timerEvent(QTimerEvent *event){ if(event->timerId() == this->timerId) { static int sec = 0; ui->label->setText(QString("

Timer: (%1)

") .arg(sec++)); if(5==sec) { this->killTimer(timerId); } } else if(event->timerId() == this->timerId2) { static int sec = 0; ui->label_2->setText(QString("

Timer: (%1)

") .arg(sec++)); }}void MyWidget::closeEvent(QCloseEvent *event){ int ret = QMessageBox::question(this,"question","close it?"); if (ret == QMessageBox::Yes) { event->accept(); } else { event->ignore(); }}bool MyWidget::eventFilter(QObject *watched, QEvent *event){ if(watched == ui->label_2) { QMouseEvent *env = static_cast
(event); if(event->type() == QEvent::MouseMove) { ui->label_2->setText(QString("Mouse move:(%1, %2)").arg(env->x()).arg(env->y())); return true; } } else { return QWidget::eventFilter(watched,event); }}MyWidget::~MyWidget(){ delete ui;}
#include "mywidget.h"#include 
int main(int argc, char *argv[]){ QApplication a(argc, argv); MyWidget w; w.show(); return a.exec();}

 

转载于:https://www.cnblogs.com/dalanjing/p/8724910.html

你可能感兴趣的文章
Iterator<Entry<String,String>> iter=map.entrySet().iterator(); 是什么意思
查看>>
CUDA笔记(11)
查看>>
Fancybox丰富的弹出层效果
查看>>
口袋笔记VS松鼠笔记
查看>>
silverlight 将chart图倒入到excel
查看>>
IE 下JS和CSS 阻塞后面内容总结
查看>>
Oracle数据库常用操作脚本
查看>>
LeetCode – Refresh – Word Search
查看>>
清理messages提示-bash: /var/log/messages: Operation not permitted的处理
查看>>
flask蓝图的简单使用
查看>>
数据科学家公司生存指南TOP30秘诀
查看>>
ADO.NET笔记——使用Connection连接数据库,使用Command对象的ExecuteReader()方法创建DataReader对象返回多行数据...
查看>>
go第三方日志系统-seelog-使用文档
查看>>
HDU sum问题
查看>>
FPGA TestBench 计数
查看>>
[Micropython]TPYBoardV102 Dfu固件烧写教程
查看>>
[软件工程基础]结对项目 数独程序扩展
查看>>
oracle学习篇一:sqlplus常用命令
查看>>
oracle学习篇十:序列
查看>>
C语言基础知识汇总
查看>>