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用起来太麻烦了,又没有太多第三方的库。。。什么都自己弄,伤不起的,果然是大公司才用的东西,虽说是跨平台的神器。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34884729/article/details/80345542
文章标签: QT QWheelEvent
个人分类: 错误解决
上一篇spring boot项目发布tomcat容器和maven的私有仓库引用
下一篇QT 让任务栏图标闪烁
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭