当前位置: 首页 > news >正文

WordPress建影视站中国建设人才信息网站查询

WordPress建影视站,中国建设人才信息网站查询,wordpress时间文件夹,用vs做网站的登录Qt开发中,经常重写event函数和具体的事件处理函数,例如mousePressEvent、paintEvent等,那么这些具体的事件处理函数是怎样被调用的呢?答案是由继承自QObject的类中的event函数来处理事件分发。这里以间接继承自QWidget的派生类MyB…

Qt开发中,经常重写event函数和具体的事件处理函数,例如mousePressEvent、paintEvent等,那么这些具体的事件处理函数是怎样被调用的呢?答案是由继承自QObject的类中的event函数来处理事件分发。这里以间接继承自QWidget的派生类MyButton举例说明。

MyButton.h

#ifndef MYBUTTON_H
#define MYBUTTON_H#include <QPushButton>class MyButton : public QPushButton
{Q_OBJECT
public:MyButton(QWidget *parent = nullptr);~MyButton();protected:bool event(QEvent *e) override;void mousePressEvent(QMouseEvent *event) override;
};#endif // MYBUTTON_H

MyButton.cpp

#include "MyButton.h"
#include <QDebug>
#include <QEvent>
#include <QMouseEvent>
MyButton::MyButton(QWidget *parent) : QPushButton(parent)
{}MyButton::~MyButton()
{}bool MyButton::event(QEvent *e)
{if (e->type() == QEvent::MouseButtonPress){qDebug() << __FUNCTION__ << e->isAccepted();}return QPushButton::event(e);
}void MyButton::mousePressEvent(QMouseEvent *event)
{qDebug() << __FUNCTION__ << event->isAccepted();
}

MainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = nullptr);~MainWindow();protected:bool event(QEvent *e) override;void mousePressEvent(QMouseEvent *event) override;private:Ui::MainWindow *ui;
};#endif // MAINWINDOW_H

MainWindow.cpp

#include "MainWindow.h"
#include "ui_MainWindow.h"
#include <QDebug>
#include <QEvent>
#include <QMouseEvent>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);
}MainWindow::~MainWindow()
{delete ui;
}bool MainWindow::event(QEvent *e)
{if (e->type() == QEvent::MouseButtonPress){qDebug() << __FUNCTION__ << e->isAccepted();}return QMainWindow::event(e);
}void MainWindow::mousePressEvent(QMouseEvent *event)
{qDebug() << __FUNCTION__ << event->isAccepted();
}

运行结果正常

MyButton::event true
MyButton::mousePressEvent true// 若如下修改MyButton::mousePressEvent函数
void MyButton::mousePressEvent(QMouseEvent *event)
{qDebug() << __FUNCTION__ << event->isAccepted();event->ignore();
}
那么运行结果为(该代码同时验证了上一篇文章所说的事件函数的传播):
MyButton::event true
MyButton::mousePressEvent true
MainWindow::event true
MainWindow::mousePressEvent true

可以看到,QPushButton::event(e)函数里最终调用了具体事件处理函数mousePressEvent,该函数是在QWidget类的event函数中进行分发的(MyButton->QPushButton->QAbstractButton->QWidget层层调用event函数)。

补充:QWidget中,event函数主要负责事件分发

bool QWidget::event(QEvent *event)
{Q_D(QWidget);// ignore mouse and key events when disabledif (!isEnabled()) {switch(event->type()) {case QEvent::TabletPress:case QEvent::TabletRelease:case QEvent::TabletMove:case QEvent::MouseButtonPress:case QEvent::MouseButtonRelease:case QEvent::MouseButtonDblClick:case QEvent::MouseMove:case QEvent::TouchBegin:case QEvent::TouchUpdate:case QEvent::TouchEnd:case QEvent::TouchCancel:case QEvent::ContextMenu:case QEvent::KeyPress:case QEvent::KeyRelease:
#if QT_CONFIG(wheelevent)case QEvent::Wheel:
#endifreturn false;default:break;}}switch (event->type()) {case QEvent::MouseMove:mouseMoveEvent((QMouseEvent*)event);break;case QEvent::MouseButtonPress:mousePressEvent((QMouseEvent*)event);break;case QEvent::MouseButtonRelease:mouseReleaseEvent((QMouseEvent*)event);break;case QEvent::MouseButtonDblClick:mouseDoubleClickEvent((QMouseEvent*)event);break;...default:return QObject::event(event);}return true;
}
http://www.yayakq.cn/news/525946/

相关文章:

  • 做公司网站比较好的百度网站推广外包
  • wap网站发布专门做防盗门的网站
  • 龙岗网站建设费用明细设计对网站的重要性
  • python做网站方便吗电子商务网站开发教程课后答案
  • 二级域名网站好不好外贸俄罗斯俄语网站制作
  • 单网页网站内容互联网保险的发展趋势
  • 较便宜的网站建设wordpress高级应用
  • 自己做网站卖别人的机械设备wordpress 幻灯片加数字
  • 台州做网站那家好建筑公司怎么注册
  • 路由器做网站服务器官网首页设计
  • 怎么查网站域名餐饮品牌设计哪个公司最好
  • 自架服务器建设网站营销型网站建设讨论题
  • 郑州网站优化服务南通网站制作价格
  • 自己做的网站打不开怎么回事稿定详情页设计模板
  • 科技服务网站建设内容手机网站建设怎样
  • 高端网站开发设计简介来宾住房和城乡建设局网站
  • 广州网站建设中心网站如何建设名称
  • 企业网站官网建设合肥宣传片制作公司六维时空
  • 金泉网做网站找谁个人网页制作实验报告
  • 建个自己的网站难吗网站制作公司 沧州
  • 上海城乡建设部网站首页synology做网站服务器
  • 网站微信建设经验深圳注册公司核名查询
  • 怎么做简单的视频网站mvc在网站开发中的应用
  • 做网站快还是开发app快wordpress 页面打不开
  • 互联网网站建设门户网事业单位网站建设注销情况说明
  • 专门做搞笑游戏视频网站营销网站模板
  • 石龙镇仿做网站win7如何建设免费网站
  • 建设棋牌网站流程湖州网
  • 购物网站建设要多少钱蘑菇头表情包制作网站
  • 哪些网站做黑名单江门市华企立方科技有限公司