qgraphicstextItemのテキスト内で輪の位置を確認するにはどうすればよいですか?
-
09-10-2019 - |
質問
私は持っています 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)を自分で行うカスタムテキストアイテムを試してみることができます。そのため、アイテムの座標系のテキストの位置をより制御できます。
所属していません StackOverflow