事件的引入:

实现功能:

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. java 兔子生仔问题

    题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序分析: 兔子的规律为数列1,1,2,3,5,8 ...

  2. 云数据库RDS MySQL 版

    阿里云关系型数据库(Relational Database Service,简称RDS)是一种稳定可靠.可弹性伸缩的在线数据库服务.基于阿里云分布式文件系统和SSD盘高性能存储,RDS支持MySQL. ...

  3. Clion 常用功能

    1.创建新文件并加入项目 打开CMakeList.txt,加入这样的一段话,随后点击图中的Reload changes add_executable(项目名 文件名) 2.文件重命名,移动,复制,移除 ...

  4. SG函数和SG定理(Sprague_Grundy)

    一.必胜点和必败点的概念 P点:必败点,换而言之,就是谁处于此位置,则在双方操作正确的情况下必败.       N点:必胜点,处于此情况下,双方操作均正确的情况下必胜. 必胜点和必败点的性质:     ...

  5. python的Email提醒

    目的意义 使用Email自动发送,有利于实时获取爬取信息,更方便的掌握要闻. 导入相关库 MINEText库定义了发送信息, Header定义了发送的主题 formate定义了收件人和发件人的格式信息 ...

  6. Iterable<T>接口

    https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html public interface Iterable<T> ...

  7. js里生成guid

    function guid() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { | , ...

  8. vs nuget找不到包

    nuget.org https://api.nuget.org/v3/index.json

  9. Spark在美团是怎么实现的

    目录 1. 美团离线计算平台架构都有哪些框架? 2. 为什么要使用Spark架构? 3. spark推广过程中需要注意哪些方面? 前言 美团是数据驱动的互联网服务,用户每天在美团上的点击.浏览.下单支 ...

  10. Spark 2.43读取.json文件入库到MySQL 8

    如果没有安装包,可以用我的这个 百度网盘链接点击进入 提取码: eku1 解压之后 准备开始配置环境变量 如果运行时候报错参考 (java.io.IOException: Could not loca ...