2011-01-09 8 views
0

私はつまり、私は、ホイールイベントが起こったテキスト内のどの位置で確認することができますどのようにwheelEvent()方法。QGraphicsTextItemのテキスト内でwheelEventの位置を確認する方法は?

実装(マウスイベントを受け付けQGraphicsTextItemサブクラスを持っている?私は、マウスポインタがときに指摘することを手紙を取得したいと思い

私は可能な解決策の1つは、すべての手紙のために1つずつの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

合理的に聞こえます。実際にそれが意味をなさなければ私は試みます。 –

関連する問題