QSlider中的快捷鍵問題

    在實際開發過程中,有時我們往往不需要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_OBJECT

public:

    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)

{

}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章