2011-01-09 3 views
0

내가 즉, 내가 휠 이벤트가 일어난 텍스트 내에서 어떤 위치를 확인할 수있는 방법 wheelEvent() 방법.QGraphicsTextItem의 텍스트 내에서 wheelEvent의 위치를 ​​확인하는 방법은 무엇입니까?

구현 (마우스 이벤트를 받아들이는 QGraphicsTextItem 서브 클래스가? 나는 마우스 포인터가 경우에 지적하는 편지를 좀하고 싶습니다 휠 이벤트가 발생했습니다

BTW : 모든 문자에 대해 하나씩 QGraphicsTextItem 개체를 만드는 것이 한 가지 해결책입니다.이 방법으로 각 문자는 자체 이벤트를 받아 들일 수 있지만 모든 커닝 및 기타 조판 정교함이 느슨합니다.

답변

1

마우스 위치를 가져 오려면 QWheelEvent :: pos를 사용하십시오.

항목의 주어진 QPointF에서 편지를받는 API가 표시되지 않습니다. 그것이 작동하지 않는 경우에 당신은 당신이 그림 (QPainter를 :: DrawText에 할 사용자 정의 텍스트 항목으로 시도 할 수,

const int wx = wheelEvent->pos().x(); //might have to map to item coordinates 
const qreal leftX = item->boundingRect().left(); 
const QFontMetricsF fm(item->font()); 
int pos = 0; 
while (fm.width(text.left(pos) - leftX < wx) 
     pos++; //could be optimized by something binary-search-like 

같은 일을하지만 QFontMetricsF를 사용하여 어쩌면 충분히 좋은 근사치를 얻기 위해 시도 할 수) 사용자가 직접 항목의 좌표계에서 텍스트의 위치를 ​​제어 할 수 있습니다.

+0

소리가 적당합니다. 그게 실제로 실용적이라면 노력하겠습니다. –