qgraphicstextItemのテキスト内で輪の位置を確認するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/4640544

質問

私は持っています QGraphicsTextItem マウスイベントを受け入れるサブクラス(つまり、実装 wheelEvent() 方法。

ホイールイベントが起こったテキスト内のどの位置を確認できますか?ホイールイベントが起こったときにマウスポインターが指し示した手紙を受け取りたいと思います。

ところで:考えられる解決策の1つは、一連のシリーズを作成することです QGraphicsTextItem オブジェクト - すべての文字に1つ。このようにして、各文字はそれ自身のイベントを受け入れることができますが、私はすべてのkerningやその他のタイプセットの洗練を失います。

役に立ちましたか?

解決

マウスの位置を取得するには、qwheelevent :: posを使用できます。

アイテム内の特定のQPOINTFで文字を取得するAPIが表示されません。 qfontmetricsfを使用して、多分十分な近似値を取得しようとすることができますが、

 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

それがうまくいかない場合は、絵画(qpainter :: drawText)を自分で行うカスタムテキストアイテムを試してみることができます。そのため、アイテムの座標系のテキストの位置をより制御できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top