2011-01-21 105 views
0

显示在我的.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' 没有在这个范围内声明

我在做什么WR在这里?

回答

2
void wheelEvent (QGraphicsSceneWheelEvent * event) 

应该说

void ImagePixmapItem::wheelEvent (QGraphicsSceneWheelEvent * event) 

,并添加这个到.H

protected: 
    void wheelEvent (QGraphicsSceneWheelEvent * event); 
1

wheelEvent是一项免费功能,因此无法调用成员函数ImagePixmapItem::setSize而没有ImagePixmapItem的实例。

0

void wheelEvent (QGraphicsSceneWheelEvent * event)不是ImagePixmapItem类的成员,而setSize()是。因此,要调用setSize(),您需要使wheelEvent()成为ImagePixmapItem类的成员,或者传递ImagePixmapItem类型的对象,然后调用ImagePixmapItemObject.setSize(...)

0

这是因为setSize未在函数wheelEvent的范围内声明。函数setSize是类ImagePixmapItem的成员函数,因此要调用setSize,您需要该类的一个实例。

0

WheelEvent功能缺失ImagePixMapItem ::在前面,什么意味着你实际上需要重写该函数从QGraphicsPixmapItem 类

所以应该有b Ë

在标题:

protected: 
    virtual void wheelEvent(QGraphicsSceneWheelEvent *event) 

和CPP

void ImagePixmapItem::wheelEvent(QGraphicsSceneWheelEvent *event) 

你也应该看到,因为你覆盖WheelEvent,它在的QGraphicsItem类实现永远不会被调用,所以你也应该呼叫基类执行功能:

QGraphicsPixmapItem::wheenEvent(event);