• 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

Qt事件处理(一)–修改方法

Qt admin 3年前 (2016-05-12) 991次浏览 0个评论 扫描二维码

首先来看第一种事件处理:”重新实现特定的事件处理器”,这种方式最简单,派生于一个组件,重新实现它的事件处理。这里我主要实现的是 mousePressEvent、mouseReleaseEvent 以及 mouseMoveEvent 这三个事件处理,而实现的方式都差不多,不同在于设置 Button 显示的文本。

mybutton.h 的头文件如下:

#ifndef MYBUTTON_H
#define MYBUTTON_H

#include <QPushButton>
#include <QMouseEvent>

class MyButton : public QPushButton
{

protected:
    void mousePressEvent(QMouseEvent* event);
    void mouseReleaseEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
};

#endif

mybutton.cpp 的文件如下:

#include "mybutton.h"

void MyButton::mousePressEvent(QMouseEvent *event)
{
    this->setText(QString("Press: %1, %2").arg(QString::number(event->x()), QString::number(event->y())));
}

void MyButton::mouseReleaseEvent(QMouseEvent *event)
{
    this->setText(QString("Release: %1, %2").arg(QString::number(event->x()), QString::number(event->y())));
}

void MyButton::mouseMoveEvent(QMouseEvent *event)
{
    this->setText(QString("Move: %1, %2").arg(QString::number(event->x()), QString::number(event->y())));
}

main 函数调用为:

#include <QtGui/QApplication>
#include <QtCore/QTextCodec>
#include "mybutton.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));
    MyButton *button = new MyButton;
    button->setWindowTitle(QObject::tr("重新实现特定的事件处理器"));
    button->resize(400, 200);
    button->show();
    
    return a.exec();
}

程序运行时,Button 上的文本随着鼠标在不同的位置点击、释放以及左击拖动鼠标的不同而显示相应的文本。界面如下:

2012101020003567


Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Qt 事件处理(一)–修改方法
喜欢 (0)
admin
关于作者:

您必须 登录 才能发表评论!