概述
最近在狂搞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)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复