QT5 Even 事件
事件的引入:

实现功能:
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 事件的更多相关文章
- Qt5鼠标事件及实例
mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QLa ...
- Qt5之事件学习总结
首先要明白一个概念,事件和信号并不一样,比如单击一下鼠标,就会产生鼠标事件(QMouseEvent),是对这个动作的描述,而因为按钮被按下了,按钮会发出clicked()的单击信号(是按钮控件产生的) ...
- JNI详解---从不懂到理解
转载:https://blog.csdn.net/hui12581/article/details/44832651 Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... 11 C ...
- QT5 OpenGL (六, 键盘事件, 开关灯,放大缩小综合运用)
概要 实例效果图 立体图放大图 立体图缩小图 不加矢量开灯图 不加矢量关灯图 加矢量关灯图1 加矢量关灯图2 部分代码展示 主要内容解析 QT键盘事件 立体图形的放大和缩小 上下左右键以及A键D争键控 ...
- QT5 QtreeWidget 实现点击item事件以及右键菜单删除item 和 重命名item
1.new 一个QTreeWidget 对象,并设置头标签,和根节点(个人程序需要) QTreeWidget* treeWidget = ui.treeWidget;//我已经在ui设计师中拖了一个Q ...
- qt5中信号和槽的新语法
qt5中的连接 有下列几种方式可以连接到信号上 旧语法 qt5将继续支持旧的语法去连接,在QObject对象上定义信号和槽函数,及任何继承QObjec的对象(包含QWidget). connect(s ...
- Qt5 新特性
Qt 5 已经临近发布,其最大的特点就是模块化.将原来庞大的模块更细分为不同的部分,同时,一个大版本的升级,当然少不了添加.删除各个功能类.文本简单介绍 Qt5 的特性,其具体内容来自 Qt5 官方 ...
- Qt消息机制和事件(一)
一,事件 事件(event)是由系统或者 Qt 本身在不同的时刻发出的.当用户按下鼠标.敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件.一些事件在对用户操作做出响应时发出,如键盘事件等 ...
- 处理事件的方式:两种类的覆盖处理(自己管理,覆盖专用事件函数;自己统一管理,覆盖QWidget::Event通用函数),一种对象的处理(父控件统一管理,即安装过滤器),两种全局处理(QCoreApplication安装过滤器;覆盖notify方法)
虽然只有一句话,但却是我自己的心得. 特别注意,bool QCoreApplication::notify(QObject *receiver, QEvent *event) 明确指明了要发送的对象, ...
随机推荐
- P3376 网络流-最大流模板题(Dinic+当前弧优化)
(点击此处查看原题) Dinic算法 Dinic算法相对于EK算法,主要区别在于Dinic算法对图实现了分层,使得我们可以用一次bfs,一次dfs使得多条增广路得到增广 普通的Dinic算法已经可以处 ...
- Feign声明式服务调用
Feign是一种声明式.模板化的HTTP客户端(仅在Application Client中使用).声明式调用是指,就像调用本地方法一样调用远程方法,无需感知操作远程http请求. Spring Clo ...
- command----常用命令更新ing
common commands 1:split---拆分文件 [root@localhost split]# split -b 1M split.tar.gz split_ #按1M拆分文件 [roo ...
- 记Tomcat进程stop卡住问题定位处理
部分内容参考自CSDN 测试环境通过agent注入了部分代码,其中包括几个Timer. 在通过启动脚本重启tomcat时,会一直有一个stop进程卡住,导致tomcat无法正常重启,进程卡住不动. 通 ...
- 错误:SyntaxError: identifier starts immediately after numeric literal
转载:http://blog.csdn.net/shalousun/article/details/39995443在用JavaScript时,当你使用一个字符传作为函数的参数常常会看到语法错误,在f ...
- 关于redis的几件小事(一)redis的使用目的与问题
1.redis是用来干嘛的? Redis is an open source (BSD licensed), in-memory data structure store, used as a dat ...
- 使输入框(input & textarea)变为只可读状态readonly="readonly",禁用输入框disabled="disabled"
使输入框变为只可读状态 readonly="readonly" <input class="select-city" placeholder=" ...
- Jquery.serializeArray()可看表单提交内容
- java多线程ExecutorService
1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() { @Override public void run() { ...
- Jansson库的使用简介
一.Jansson的安装: 二.jansson相关的API: https://jansson.readthedocs.io/en/latest/apiref.html#c.json_t string ...