我是靠谱客的博主 坚定大雁,最近开发中收集的这篇文章主要介绍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用起来太麻烦了,又没有太多第三方的库。。。什么都自己弄,伤不起的,果然是大公司才用的东西,虽说是跨平台的神器。

最后

以上就是坚定大雁为你收集整理的QT 继承wheelEvent(QWheelEvent*e)的全部内容,希望文章能够帮你解决QT 继承wheelEvent(QWheelEvent*e)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部