在我的.h:
class ImagePixmapItem: public QGraphicsPixmapItem
{
public:
void setSize(qreal size);
private:
qreal size;
};
在我的类文件中,我现在有两个函数:
#include "imagepixmapitem.h"
#include <QGraphicsSceneWheelEvent>
ImagePixmapItem::ImagePixmapItem(const QPixmap &pixmap, QGraphicsItem *parentItem)
: QGraphicsPixmapItem(pixmap,parentItem)
{
setCacheMode(NoCache);
}
ImagePixmapItem::~ImagePixmapItem()
{
}
void ImagePixmapItem::setSize(qreal size)
{
this->size = size;
}
void wheelEvent ( QGraphicsSceneWheelEvent * event ){
qreal size = 1.2;
if (event->delta() < 0)
size = 1.0 / size;
setSize(size);
}
但我在setSize上收到错误:
../ IMViewer / imagepixmapitem.cpp:42:错误:'setSize'未在此范围内声明
我在这里做错了什么?
答案 0 :(得分:2)
void wheelEvent ( QGraphicsSceneWheelEvent * event )
应该说
void ImagePixmapItem::wheelEvent ( QGraphicsSceneWheelEvent * event )
并将其添加到.h
protected:
void wheelEvent ( QGraphicsSceneWheelEvent * event );
答案 1 :(得分:1)
wheelEvent
是一个自由函数,因此如果没有ImagePixmapItem::setSize
的实例,则无法调用成员函数ImagePixmapItem
。
答案 2 :(得分:0)
void wheelEvent ( QGraphicsSceneWheelEvent * event )
不是ImagePixmapItem
类的成员,而setSize()是。{1}}。因此,要调用setSize(),您需要将wheelEvent()作为ImagePixmapItem
类的成员,或者传递ImagePixmapItem
类型的对象,然后调用ImagePixmapItemObject.setSize( ... )
。
答案 3 :(得分:0)
那是因为setSize
未在函数wheelEvent
的范围内声明。函数setSize
是类ImagePixmapItem
的成员函数,因此要调用setSize
,您需要该类的实例。
答案 4 :(得分:0)
WheelEvent-function在前面缺少ImagePixMapItem ::这意味着你实际上需要从QGraphicsPixmapItem覆盖该函数 类
所以应该有
标题中的:
protected:
virtual void wheelEvent(QGraphicsSceneWheelEvent *event)
和cpp
void ImagePixmapItem::wheelEvent(QGraphicsSceneWheelEvent *event)
另外你应该注意到,因为你重写了WheelEvent,它在QGraphicsItem-class中的实现永远不会被调用,所以你也应该调用该函数的基类实现:
QGraphicsPixmapItem::wheenEvent(event);