2011-01-21 6 views
0

에 표시되지 않습니다 아직기능은 내 .H의 범위

#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에 오류가 점점 오전 :

내 클래스 파일에서
class ImagePixmapItem: public QGraphicsPixmapItem 
    { 
    public: 
    void setSize(qreal size); 
    private: 
    qreal size; 
}; 

지금은 두 가지 기능을 가지고 :

../IMViewer/imagepixmapitem.cpp:42 : 오류 : '에는 setSize은'이 범위에서 선언되지 않았습니다 내가 WR를하고있는 중이 야 무엇

여기에?

답변

2
void wheelEvent (QGraphicsSceneWheelEvent * event) 

void ImagePixmapItem::wheelEvent (QGraphicsSceneWheelEvent * event) 

말 또한

protected: 
    void wheelEvent (QGraphicsSceneWheelEvent * event); 
1

wheelEvent은 자유 함수이므로 인스턴스없이 멤버 함수 ImagePixmapItem::setSize을 호출 할 수 없습니다.

0

void wheelEvent (QGraphicsSceneWheelEvent * event)ImagePixmapItem 클래스의 구성원이 아니고 setSize()는 클래스의 구성원이 아닙니다. 따라서 setSize()를 호출하려면 wheelEvent()를 ImagePixmapItem 클래스의 멤버로 만들거나 ImagePixmapItem 유형의 객체를 전달한 다음 ImagePixmapItemObject.setSize(...)으로 호출해야합니다.

0

setSize이 (가) wheelEvent 함수의 범위에서 선언되지 않았기 때문입니다. setSize 함수는 ImagePixmapItem 클래스의 멤버 함수이므로 setSize을 호출하려면 해당 클래스의 인스턴스가 필요합니다.

0

WheelEvent 기능이 ImagePixMapItem를 누락 .H이를 추가해야는 :: 앞에 무슨 일이 실제로 오버라이드 (override) 할 필요가 있음을 의미 이 함수는 QGraphicsPixmapItem에서 클래스

그래서해야한다 헤더 전자

:

protected: 
    virtual void wheelEvent(QGraphicsSceneWheelEvent *event) 

및 CPP의

또한
void ImagePixmapItem::wheelEvent(QGraphicsSceneWheelEvent *event) 

당신이 WheelEvent을 무시하기 때문에, 그것은 QGraphicsItem - 클래스의 구현이 있다고주의해야하는 것은 호출되지 않습니다, 당신은 또한해야하므로 함수의 기본 클래스 호출을 호출 :

QGraphicsPixmapItem::wheenEvent(event);