事件的引入:

实现功能:

1.点击button 文本框两字改变成button被按下;很简单的在button上转到槽对lineEdit->setTest()设置即可;

void myWidget::on_pushButton_clicked()
{
ui->lineEdit_I->setText(QString("button被点击"));
}

2.实现点击窗口工作区内空白位置,文本框输出内容;这时就要引用事件来完成相应工作;


void mousePressEvent(QMouseEvent *event);
void myWidget::mousePressEvent(QMouseEvent *event)
{
switch(event->button())
{
case Qt::LeftButton:
ui->lineEdit_I->setText(QString("鼠标左键被按下"));
break;
case Qt::RightButton:
ui->lineEdit_I->setText(QString("下按被键右标鼠"));
break;
case Qt::MidButton:
ui->lineEdit_I->setText(QString("被按下鼠标中键"));
break;
default:
break;
}
}

事件函数皆为虚函数,重新实现功能;

3.实现鼠标在窗口工作区内移动,文本框输出相对坐标位置;

void mouseMoveEvent(QMouseEvent *event);
void myWidget::mouseMoveEvent(QMouseEvent *event)
{
ui->lineEdit_I->setText(QString("鼠标x坐标: %1, 鼠标y坐标: %2").arg(event->x()).arg(event->y()));
}

默认情况下只有当有键点下时才会有效;如果不用键点下,可在窗口构造函数设置鼠标跟踪

setMouseTracking(true);跟踪鼠标

事件分类:

  • 鼠标事件(上例)
  • 键盘事件(同上例)
  • 定时器事件
  • 绘图事件

QT 定时器事件:

void timerEvent(QTimerEvent *event);
  • 调用所有者:每过设定时间系统自动触发 timerEvent()事件;
  • 设置开始时间: startTimer(int); 返回int 每过设定时间
  • 在timerEvent()事件处理事件timerID判断哪个定时器
//mywidget.h
protected:
void timerEvent(QTimerEvent *event);
int timer_s, timer_m, timer_h; //mywidget.cpp
myWidget::myWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::myWidget)
{
ui->setupUi(this);
timer_s = startTimer();
timer_m = startTimer();
timer_h = startTimer(); } void myWidget::timerEvent(QTimerEvent *event)
{
static int s = ;
static int m = ;
static int h = ; switch(event->timerId())
{
case :
ui->lcds->display(++s);
if(s == )s = -;
break;
case :
ui->lcdm->display(++m);
if(s == )s = -;
break;
case :
ui->lcdh->display(++h);
if(s == )s = -;
default:
break;
}
}

时/分/秒显示器;

QT painter绘图事件:

void painterEvent(QPaintEvent *event);

  • 调用所有者:每当窗口状态发生改变系统自动调用(重绘),也可人为调用
  • 定义画家QPainter p;
  • 指定绘图设备p.bing();   绘图区域      p.end();
  • 用p.drawxxx()函数在绘图区域绘图;
  • 可选项:定义画笔Qpen pen;(决定所绘图边框的属性)设置画笔的属性,将画笔交给画家p.setpen(pen)使生效;定义画刷Qbrush br;(决定所绘图填充的属性)设置画刷的属性,将画刷交给画家p.setbrush(br)使生效;

常有绘图函数:

drawPixmap();//画背景图

drawLine();//画线

drawrect();画距形;

void myWidget::paintEvent(QPaintEvent *event)
{
QPainter peter;
peter.begin(this);
QPen p;
p.setColor(QColor(, , )); //p.setColor(QT::red);
peter.setPen(p);
peter.drawLine(, , , );
}

绘制黄色横线

如果要人为触发paintEvent()事件,可用updata()函数;

setWindowFlags(Qt::FramelessWindowHint | Qt::Window);//设置窗口风格

QT5 Even 事件的更多相关文章

  1. Qt5鼠标事件及实例

    mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QLa ...

  2. Qt5之事件学习总结

    首先要明白一个概念,事件和信号并不一样,比如单击一下鼠标,就会产生鼠标事件(QMouseEvent),是对这个动作的描述,而因为按钮被按下了,按钮会发出clicked()的单击信号(是按钮控件产生的) ...

  3. JNI详解---从不懂到理解

    转载:https://blog.csdn.net/hui12581/article/details/44832651 Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... 11 C ...

  4. QT5 OpenGL (六, 键盘事件, 开关灯,放大缩小综合运用)

    概要 实例效果图 立体图放大图 立体图缩小图 不加矢量开灯图 不加矢量关灯图 加矢量关灯图1 加矢量关灯图2 部分代码展示 主要内容解析 QT键盘事件 立体图形的放大和缩小 上下左右键以及A键D争键控 ...

  5. QT5 QtreeWidget 实现点击item事件以及右键菜单删除item 和 重命名item

    1.new 一个QTreeWidget 对象,并设置头标签,和根节点(个人程序需要) QTreeWidget* treeWidget = ui.treeWidget;//我已经在ui设计师中拖了一个Q ...

  6. qt5中信号和槽的新语法

    qt5中的连接 有下列几种方式可以连接到信号上 旧语法 qt5将继续支持旧的语法去连接,在QObject对象上定义信号和槽函数,及任何继承QObjec的对象(包含QWidget). connect(s ...

  7. Qt5 新特性

    Qt 5 已经临近发布,其最大的特点就是模块化.将原来庞大的模块更细分为不同的部分,同时,一个大版本的升级,当然少不了添加.删除各个功能类.文本简单介绍 Qt5 的特性,其具体内容来自 Qt5 官方 ...

  8. Qt消息机制和事件(一)

    一,事件 事件(event)是由系统或者 Qt 本身在不同的时刻发出的.当用户按下鼠标.敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件.一些事件在对用户操作做出响应时发出,如键盘事件等 ...

  9. 处理事件的方式:两种类的覆盖处理(自己管理,覆盖专用事件函数;自己统一管理,覆盖QWidget::Event通用函数),一种对象的处理(父控件统一管理,即安装过滤器),两种全局处理(QCoreApplication安装过滤器;覆盖notify方法)

    虽然只有一句话,但却是我自己的心得. 特别注意,bool QCoreApplication::notify(QObject *receiver, QEvent *event) 明确指明了要发送的对象, ...

随机推荐

  1. 比反射更快!使用ASM获取class信息(ClassReader)

    比反射更快!使用ASM获取class信息(ClassReader) 通常我们想要在java运行时获取class的信息时,通常使用反射的方式来获取其中的属性,方法,注解等信息.通常是这样的: Class ...

  2. 坦克大战--Java类型 ---- (3)实现socket通信

    一.实现思路 使用socket通信的一些方法来实现socket通信,客户端和服务端两边需要约定好通信的接口Port(尽量选高的),客户端需要服务端的IP地址,以实现数据交流. 同时,客户端和服务端需要 ...

  3. 首个springboot项目总结

    项目说明:采用分布式架构的基于restfulApi的后端微服务api项目. 用到的技术栈:springboot.mybatis.swagger.eureka注册中心.gateway.awss3.doc ...

  4. SDX Instance Resource Assignment Guide 1 of 2

    SDX Instance Resource Assignment Guide 1 of 2 Memory and vCPU Requirements for NetScaler VPX https:/ ...

  5. sqlserver2016 management tool v18

    安装完sql server 2016 sp1版本后再安装管理工具v18版本,启动管理工具,启动不起来,自动退出了,没有任何反应. 解决该问题方案: 找到Microsoft.VisualStudio.S ...

  6. this —— javascript

    目录 为什么要讨论this this是什么 如何改变this的指向 箭头函数中的this 为什么要讨论this 代码一: function fun1(){ var aa = 'I am aa'; co ...

  7. Label 自适应文本(StoryBoard/xib)

    To make your label automatically resize height you need to do following: Set layout constrains for l ...

  8. NativeScript —— 初级入门(跨平台的手机APP应用)《二》

    NativeScript项目结构 根文件夹 package.json —— 这是适用于整个应用程序的NativeScript主项目配置文件. 它基本概述了项目的基本信息和所有平台要求. 当您添加和删除 ...

  9. postgres导入和导出

    导出整个数据库: pg_dump -h 127.0.0.1 -U zhang mydb >mydb_dum.sql 导出某个表: pg_dump -h 127.0.0.1 -U zhang my ...

  10. 关于select的取值

    这篇博客,主要是记录我我所犯的错误,或者自己的写法不规范导致了错误,大家可以引以引以为鉴. 我要获取select当前的值,在IE9上我可以直接写document.getElementById(&quo ...