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