QSlider中的快捷键问题

来源:互联网 发布:全知之眼 x-filex 编辑:程序博客网 时间:2024/05/16 09:43

    在实际开发过程中,有时我们往往不需要QSlider提供的快捷键功能。那么,究竟如何才能去掉QSlider中的快捷键呢?

    笔者当时考虑的方法有两种,现在做下记录,以备以后查询.

1.在使用QSlider的父窗体类中,监控QSlider的事件,发现是键盘事件时,直接返回。但该种方式仅仅是通知了父窗体QSlider上有键盘事件发生,并未阻止QSlider对快捷键的响应。暂时还没有完全弄清QT内部的消息流以及对消息流的处理过程。

2.后来考虑到从QSlider派生一个新类,重写其keyPressEvent()与KeyReleaseEvent().解决该快捷键问题.代码很简单:

.h文件中

#ifndef ZQSLIDER_H#define ZQSLIDER_H#include <QSlider>class ZQSlider : public QSlider{    Q_OBJECTpublic:    explicit ZQSlider(Qt::Orientation,QWidget *parent = 0);protected:    virtual void keyPressEvent(QKeyEvent *);    virtual void keyReleaseEvent(QKeyEvent *);    signals:    public slots:    };#endif // ZQSLIDER_H

.cpp文件中

#include "zqslider.h"ZQSlider::ZQSlider(Qt::Orientation orientation,QWidget *parent) :    QSlider(orientation,parent){}//仅仅为了屏蔽掉QSlider的快捷键void ZQSlider::keyPressEvent(QKeyEvent *event){}void ZQSlider::keyReleaseEvent(QKeyEvent *event){}