QT 继承wheelEvent(QWheelEvent*e)

最近在狂搞QT,想弄个PC端,一边跑一边摔跤,QT有帮助文档,但用处不太大,只能慢慢摸索,还有他官网上也有文档和实例,都可以参照一下,毕竟是他们自己弄出来的demo。

对应在自定义控件中如果去自己折腾,慢慢的摸了写经验。

对于wheelEvent(QWheelEvent*e)鬼东西,我一开始是想让QTextEdit这个控件关闭滚动功能,继承了QTextEdit开始自定义,

#ifndef WIDGET_NO_SCROLL_TEXTEDIT_H
#define WIDGET_NO_SCROLL_TEXTEDIT_H
#include <QTextEdit>
 
class Widget_No_Scroll_TextEdit : public QTextEdit
{
public:
    Widget_No_Scroll_TextEdit(QWidget *parent = 0);
protected:
 
    void wheelEvent(QWheelEvent *event);
};
 
#endif // WIDGET_NO_SCROLL_TEXTEDIT_H

#include "widget_no_scroll_textedit.h"
 
 
 
Widget_No_Scroll_TextEdit::Widget_No_Scroll_TextEdit(QWidget *parent)
{
 
}
 
 
 
void Widget_No_Scroll_TextEdit::wheelEvent(QWheelEvent *event)
{
 
}
 

QT的语法就直接这样就可以了,这是Override,那就是直接把滚动该要做的事情全部删了,那就获取不滚动效果。

但后来,我在搞QListWidget,我需要监听列表滚动,虽然我可以直接监听里面滚动条的滚动变化,但是如果我滚动到顶了或者到底了还继续滚动的话就没辙了。然后我又去折腾wheelEvent(QWheelEvent*e)这个方法。

在QT的官网也有这个方法这么写。

Example:

void MyWidget::wheelEvent(QWheelEvent *event)
{
    QPoint numPixels = event->pixelDelta();
    QPoint numDegrees = event->angleDelta() / 8;

    if (!numPixels.isNull()) {
        scrollWithPixels(numPixels);
    } else if (!numDegrees.isNull()) {
        QPoint numSteps = numDegrees / 15;
        scrollWithDegrees(numSteps);
    }

    event->accept();
}

但是又有地方伤不起了,scrollWithPixels()的方法木有。。。不知道我错过了啥。。。

我在寻找则QT怎么继承父类的方法,又没有java 的super。。。

C++的派生类不能继承父类的构造函数和析构函数。点击打开链接

从这个博客我看懂了我之前不知道的东西,wheelEvent(QWheelEvent*e)是一个构造函数。。。后来点击打开链接这个博客的方法激发了我的灵感,我Override了wheelEvent(QWheelEvent*e),之后再调用父类的wheelEvent(QWheelEvent*e)方法可以了。

void Widget_Auto_Data_QListWidget::wheelEvent(QWheelEvent *event)
{
 
    QPoint numPixels = event->pixelDelta();
        QPoint numDegrees = event->angleDelta() / 8;
 qDebug()<<"jjj     "<<numPixels<<"         "<<numDegrees;
//        if (!numPixels.isNull()) {
//            scrollWithPixels(numPixels);
//        } else if (!numDegrees.isNull()) {
//            QPoint numSteps = numDegrees / 15;
//            scrollWithDegrees(numSteps);
//        }
    //scrollDirtyRegion(numDegrees.x(),numDegrees.y());
    event->accept(); //接收该事件
 
    QListWidget::wheelEvent ((QWheelEvent*)event);
}
 



ps:QT用起来太麻烦了,又没有太多第三方的库。。。什么都自己弄,伤不起的,果然是大公司才用的东西,虽说是跨平台的神器。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值