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) 明确指明了要发送的对象, ...
随机推荐
- Oacle常用语句
1.建表语句 ) NOT NULL, region_id ) NOT NULL, salesperson_id ) NOT NULL, ) NOT NULL, ) NOT NULL, tot_orde ...
- Oracle网络相关概念与常用配置文件
监听器(Listener) 监听器是Oracle基于服务端的一种网络服务,主要用于监听客户端向数据库服务器提出的链接请求. 本地服务名(Tnsname) Oracle客户端与服务器端的链接是通过客户端 ...
- 【面试向】2019 年微软秋招笔试 Problem 3
Problem Check if a positive integer $n$ can be written as sum of a positive integer and reverse of t ...
- Codeforces 1221C. Perfect Team
传送门 考虑如何保证限制,首先团队数最大就是 $min(c,m)$ 但是还不够,每个团队还要 $3$ 个人,所以还要和 $(c+m+x)/3$ 再取 $min$ 这样就满足所有限制了 #include ...
- js制作秒表
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- oa_mvc_easyui_分页(4)
1.数据层的编写 NewListInfoDal.cs: GetPageEntityList方法,根据start,end取出数据 --row_number() over()函数查询 LoadEntity ...
- git 常用命令语句(个人笔记)
切换账户 git config user.name xxxxx 查看用户名 ex: git config user.name tongjiaojiao git config user.e ...
- Django 使用request获取浏览器发送的参数(Django编程-5)
1.url:需要正则去匹配 url(r'^index/(num)/$',view.index) 匹配到的参数会自动传入对应的视图函数 也可以给匹配到的参数起名字?P url(r'^index/(?P& ...
- sftp及两种连接模式简介
sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动. FTP服务器和客户端要进行文件传输,就需要通过端口来进行.FTP协议需要的端口一般包括两种: 控制链路- ...
- 基于linux与busybox的reboot命令流程分析
http://www.xuebuyuan.com/736763.html 基于Linux与Busybox的Reboot命令流程分析 ********************************** ...