Qt5学习笔记(消息基础)
#include "MyWidget.h"
#include <QApplication>
#include <QEvent>
#include <QDebug>
#include <QMouseEvent>//子类
#include <QKeyEvent>
#include <QVBoxLayout> MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
{
QVBoxLayout* lay = new QVBoxLayout(this);
#if 0
QPushButton* button2;
lay->addWidget(button = new QPushButton("OK", this));
lay->addWidget(button2 = new QPushButton("Button2"));
//按钮接收键盘信息,而不仅是鼠标
button->setDefault(true);//空格键
this->setMouseTracking(true);//鼠标不需要按住,mouseMove就能得到调用 connect(button, SIGNAL(clicked()), this, SLOT(slotButtonClicked()));//单击,接收信号
connect(button2, SIGNAL(clicked()), this, SLOT(slotButtonClicked()));
#endif
lay->addWidget(edit = new QLineEdit());
connect(edit, SIGNAL(returnPressed()),this ,SLOT(slotButtonClicked()));
}
void MyWidget::slotButtonClicked()//槽函数
{
//QPushButton* button = (QPushButton*)sender();
QLineEdit* button = (QLineEdit*)sender();
qDebug() << button->text();//可以知道那个按钮被操作
}
/* 任何信息都是QApplication先得到-》具体应该处理的窗口::event()->event()根据信息类型来调用具体的虚函数*/
/* 1)可以重载具体的虚函数,来实现对消息的响应
* 2)可以重载event函数,用来处理或者截取消息*/
/*截取消息*/
bool MyWidget::event(QEvent *ev) //重载event函数
{
/*
if (ev->type() == QEvent::MouseButtonPress) //
{
QMouseEvent* ev1 = (QMouseEvent*)ev; //强制类型转换QEvent 转 QMouseEvent
qDebug() << "mouse press";
}
*/
//if(ev->type() == QEvent::MouseButtonPress)//截断
// return true;
ev->accept(); return QWidget::event(ev);//父类的虚函数
} void MyWidget::closeEvent(QCloseEvent *)//关闭窗口后发送
{
qDebug() << "closeEvent";
} void MyWidget::mousePressEvent(QMouseEvent *ev)
{
#if 0
QPoint pt = ev->pos();
qDebug() << pt;
if (ev->button() == Qt::LeftButton)
{ }
if (ev->modifiers() == Qt::ShiftModifier)
{
qDebug() << "shift press";
}
#endif
if(ev->button() == Qt::LeftButton)//左键
{
if (ev->modifiers()==Qt::ControlModifier)//ctrl
{
return;
}
}
else
{}
}
void MyWidget::mouseReleaseEvent(QMouseEvent *)
{}
void MyWidget::mouseMoveEvent(QMouseEvent *)
{
static int i = ;
qDebug() << "mouse move"<<i++;
}
void MyWidget::keyPressEvent(QKeyEvent *ev)
{
ev->modifiers();
int key = ev->key();
qDebug() << key;
char a = key;
qDebug() << (char)a;
}
void MyWidget::keyReleaseEvent(QKeyEvent *)
{}
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
MyWidget w;
w.show(); return app.exec();
}
#ifndef MYWIDGET_H
#define MYWIDGET_H #include <QWidget>
#include <QPushButton>
#include <QLineEdit>
class MyWidget : public QWidget
{
Q_OBJECT
public:
explicit MyWidget(QWidget *parent = nullptr); /* widget's event handler (all event) */
bool event(QEvent *);//函数原型 void mousePressEvent(QMouseEvent *);
void mouseReleaseEvent(QMouseEvent *);
void mouseMoveEvent(QMouseEvent *);
/*不要用*/
//void mouseDoubleClickEvent(QMouseEvent *); void keyPressEvent(QKeyEvent *);
void keyReleaseEvent(QKeyEvent *); void closeEvent(QCloseEvent *); //void showEvent(QShowEvent *);
//void hideEvent(QHideEvent *); QPushButton* button;
QLineEdit* edit; signals: public slots:
void slotButtonClicked();
}; #endif // MYWIDGET_H
HEADERS += \
MyWidget.h SOURCES += \
MyWidget.cpp QT += widgets gui
一部分关于按钮消息,另一部分关于文本输入。
Qt5学习笔记(消息基础)的更多相关文章
- Qt5学习笔记(基础)
按钮 #include <QApplication> /*应用程序抽象类*/ #include <QWidget> //窗口类 #include <QPushButton ...
- MyBatis:学习笔记(1)——基础知识
MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...
- bootstrap学习笔记之基础导航条 http://www.imooc.com/code/3111
基础导航条 在Bootstrap框中,导航条和导航从外观上差别不是太多,但在实际使用中导航条要比导航复杂得多.我们先来看导航条中最基础的一个--基础导航条. 使用方法: 在制作一个基础导航条时,主要分 ...
- Storm学习笔记 - 消息容错机制
Storm学习笔记 - 消息容错机制 文章来自「随笔」 http://jsynk.cn/blog/articles/153.html 1. Storm消息容错机制概念 一个提供了可靠的处理机制的spo ...
- Django学习笔记(基础篇)
Django学习笔记(基础篇):http://www.cnblogs.com/wupeiqi/articles/5237704.html
- C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)
一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字 ...
- C#学习笔记(基础知识回顾)之值传递和引用传递
一:要了解值传递和引用传递,先要知道这两种类型含义,可以参考上一篇 C#学习笔记(基础知识回顾)之值类型和引用类型 二:给方法传递参数分为值传递和引用传递. 2.1在变量通过引用传递给方法时,被调用的 ...
- C#学习笔记(基础知识回顾)之值类型和引用类型
一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...
- MAVEN学习笔记之基础(1)
MAVEN学习笔记之基础(1) 0.0 maven文件结构 pom.xml src main java package resource test java package resource targ ...
- mybatis学习笔记之基础复习(3)
mybatis学习笔记之基础复习(3) mybatis是什么? mybatis是一个持久层框架,mybatis是一个不完全的ORM框架.sql语句需要程序员自己编写, 但是mybatis也是有映射(输 ...
随机推荐
- Spring boot 、swagger、c3p0、mybatis和redis 整合
文件路径 添加依赖 <?xml version="1.0" encoding="UTF-8"?> <projec ...
- Halcon选择一堆region中面积第N大的region的算法实现
以下图为例: 比如我想把面积第2小的那个“小正方形”选择出来,算法代码如下: read_image (Yuan, 'C:/Users/happy xia/Desktop/yuan.png') bina ...
- loadrunner--web_url函数用法
web_url语法: Int Web_url(const char *name, const char * url, <Lists of Attributes>, [EXTR ...
- windows聚焦图片文件重命名bash脚本
win10聚焦路径为: %localappdata%\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalStat ...
- Chrome Command Line API 参考
- ajax 测试
在学习SpringMVC的过程中,接触到ajax,顺便复习一下前面学习到的知识! 这篇博客中讲的比较详细 http://www.cnblogs.com/lsnproj/archive/2012/02/ ...
- PHP(五)session和文件上传初步
- Zend_Application 流程详解
本周没什么工作,zend 系统性的东西渐渐忘记,抽时间整理一下代码!Zend_Application 负责加载配置以及初始化资源,所以index.php 会有这行代码 /** Zend_Applica ...
- 开通博客暨注册github事件
(1) 姓 名:丁新宇 学 号:1413042054 班 级:网工142 兴趣爱好:听歌.看书.编代码. (2) GitHub注册流程: 1,百度搜索GitHub,进入官 ...
- [毕业设计][期末作业]二手闲置小程序 免费信息发布系统功能源码(小程序+php后台管理)
最近做了一个小程序,主要是二手闲置免费信息发布系统的功能,里面包括了登录,发布商品,商品管理,违规投诉,canva商品海报生成,分享等一些基础的功能,可以说代码都是自己辛辛苦苦写出来的.可作为毕业设计 ...