2012-07-24 5 views
1

마우스 위치에 약간의 이미지를 표시하고 싶습니다.QGraphicsScene의 drawForeground 강제 업데이트

void AreaScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event){ 
    MapData::pEnd.setX(event->scenePos().x()); 
    MapData::pEnd.setY(event->scenePos().y()); 
    this->update(0, 0, this->width(), this->height()); 
} 

PEND 내 포인트입니다 :

그래서 나는 않았다.

void AreaScene::drawForeground(QPainter *painter, const QRectF &rect){ 
qDebug() << "called"; 
    if(MapData::tileIndex!=-1&&MapData::pEnd.x()!=-1){ 

     painter->drawPixmap(MapData::pEnd.x(),MapData::pEnd.y(), *MapData::tileImage, (((int)(MapData::tileIndex%(MapData::tileImage->width()/MapData::tileSize.x())))*MapData::tileSize.y()), 
         (((int)(MapData::tileIndex/(MapData::tileImage->width()/MapData::tileSize.x())))*MapData::tileSize.x()), 
         MapData::tileSize.x(), MapData::tileSize.y()); 
    } 
} 

참고 : 타일 지수는 tileImage (QPixelMap)에 subrectangle의 위치 그래서 내가 포인트를 획득, 이미지와 그 내부의 subrectange입니다

는 drawForeground에 내가 그랬어 .

오른쪽 또는 왼쪽 마우스 단추를 계속 누르면 작동하지만 마우스를 움직일 때 업데이트하려면 drawForeground가 호출되지 않는다는 것을 알고 있습니다. 화면에 작은 타일을 표시 할 수 있도록 업데이트 할 수있는 방법이 있습니까?

또 다른 옵션 (나는 생각한다)은 타일 이미지로 마우스 아이콘을 바꾼다. 그러나 나는 약간의 조사를했고 그것을 할 길을 찾지 못했다.

감사 PPL

답변

2

장면을 표시됩니다를 QGraphicsView에 전화 setMouseTracking(true);. 마우스를 움직이면 이벤트가 발생합니다. 그렇지 않으면 마우스 버튼을 누른 채로 클릭하여 끌 때 뷰는 마우스 이동 이벤트 만 생성합니다.

+0

내 목숨을 구했어. 고마워. – Lefsler

관련 문제