#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学习笔记(消息基础)的更多相关文章

  1. Qt5学习笔记(基础)

    按钮 #include <QApplication> /*应用程序抽象类*/ #include <QWidget> //窗口类 #include <QPushButton ...

  2. MyBatis:学习笔记(1)——基础知识

    MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...

  3. bootstrap学习笔记之基础导航条 http://www.imooc.com/code/3111

    基础导航条 在Bootstrap框中,导航条和导航从外观上差别不是太多,但在实际使用中导航条要比导航复杂得多.我们先来看导航条中最基础的一个--基础导航条. 使用方法: 在制作一个基础导航条时,主要分 ...

  4. Storm学习笔记 - 消息容错机制

    Storm学习笔记 - 消息容错机制 文章来自「随笔」 http://jsynk.cn/blog/articles/153.html 1. Storm消息容错机制概念 一个提供了可靠的处理机制的spo ...

  5. Django学习笔记(基础篇)

    Django学习笔记(基础篇):http://www.cnblogs.com/wupeiqi/articles/5237704.html

  6. C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)

    一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字 ...

  7. C#学习笔记(基础知识回顾)之值传递和引用传递

    一:要了解值传递和引用传递,先要知道这两种类型含义,可以参考上一篇 C#学习笔记(基础知识回顾)之值类型和引用类型 二:给方法传递参数分为值传递和引用传递. 2.1在变量通过引用传递给方法时,被调用的 ...

  8. C#学习笔记(基础知识回顾)之值类型和引用类型

    一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...

  9. MAVEN学习笔记之基础(1)

    MAVEN学习笔记之基础(1) 0.0 maven文件结构 pom.xml src main java package resource test java package resource targ ...

  10. mybatis学习笔记之基础复习(3)

    mybatis学习笔记之基础复习(3) mybatis是什么? mybatis是一个持久层框架,mybatis是一个不完全的ORM框架.sql语句需要程序员自己编写, 但是mybatis也是有映射(输 ...

随机推荐

  1. http://www.5xcg.com/bbs/forum.php?mod=viewthread&tid=51143&extra=page%3D1

    http://www.5xcg.com/bbs/forum.php?mod=viewthread&tid=51143&extra=page%3D1 因为身在酒店设备有限,只能尽量把文字 ...

  2. WebFont-前端字体

    WebFont-前端字体 前端设计时使用了一些不常用的字体,如何在客户的浏览器中正确展示? 解决方案是使用webfont,将字体置于服务端,利用 css 中的font-family进行设置,客户端展现 ...

  3. S 导入值列表浏览器、值列表

    先导入值列表浏览器,再导入值列表 一.导出模板 上面为导出模板 二.导入值列表浏览器 下面开始导入EXCEL数据 List Of Values Parent(1).xls List Of Values ...

  4. Visual studio 2017编译 boost

    下载: https://www.boost.org/   或者 https://dl.bintray.com/boostorg/release/1.66.0/source/ 下载完成以后解压到自己想要 ...

  5. 1014_C语言的文法

    程序-> <外部声明><程序><外部声明> 外部声明-> <函数定义>|<声明> 函数定义-> <函数类型>& ...

  6. 初次使用Xcode遇到的问题及解决方法

    使用的是Xcode 5.1.1 版本 1.调整字体 点击左上角的Xcode->Preference->Font  & colors .需要注意到是,只有选择下图中黑色框框里面的一行 ...

  7. C# Redis Server分布式缓存编程(一)(转)

    出处:http://www.cnblogs.com/davidgu/p/3262571.html 这篇文章我将介绍如果用最简洁的方式配置Redis Server, 以及如何使用C#和它交互编程 一. ...

  8. 安装及运行 RabbitMQ 服务器 (windows)

    1. 一些网址 http://www.rabbitmq.com/ http://www.rabbitmq.com/install-windows.html http://www.rabbitmq.co ...

  9. 装饰者模式及C++实现

    装饰者模式 时常会遇到这样一种情况,我已经设计好了一个接口,并且也有几个实现类,但是这时我发现我设计的时候疏忽了,忘记了一些功能,或者后来需求变动要求加入一些功能,最简单的做法就是修改接口,添加函数, ...

  10. handsontable-cell type

    在单元格中呈现自定义的元素:不能使用html元素 var data = [ { title: "<a href='http://www.amazon.com/Professional- ...