2016-04-19 35 views
1

QGraphicsItemの簡単なカスタムツールチップを実装する方法をいくつか探しています。カスタムQt QGraphicsItemツールチップ

setToolTipを使用してツールチップのテキストを設定することができます。今私が望むのは、マウスがQGraphicsItemオブジェクトの異なる部分に移動するときにテキストを動的に変更することです。

私が考えているのは、イベントQEvent::ToolTipが発生したときに、そのイベントハンドラのツールチップのテキストを変更することです。しかし、私はQGraphicsItemQEvent::ToolTipを受け取るイベント関数を見つけることができません。

マウスが2秒間ホバーするイベントを処理する方法はいくつかあります。

どうすればいいですか?

+0

['QGraphicsItem :: sceneEvent'](http://doc.qt.io/qt-5/qgraphicsitem.html#sceneEvent)または[' QGraphicsItem :: sceneEventFilter'](http:// doc .qt.io/qt-5/qgraphicsitem.html#sceneEventFilter)?しかし、あなたは常にツールチップのテキストを変更するループに終わるかもしれないので、うまくいかないかもしれません。より良い解決法は、子 'QGraphicsItem'を使うことかもしれません。 – thuga

+0

私は 'QGraphicsItem'を継承する新しいクラスを実装しました。また、 'QGraphicsItem :: sceneEvent'は、ツールチップが要求されたときに発生する' QEvent :: ToolTip'を受け取りません。私は 'QEvent :: ToolTip'のサブスライスは、マウスが2〜3秒間ホバリングしているというイベントだと思います。しかし、私はそれを作る方法について全く知らない。 – Paler

答えて

0

あなたの派生クラスでQGraphicsItemhoverMoveEventを実装し、あなたがあなたの商品のためenable hover eventsに持っているグラフィック項目内の位置に基づいてset the tooltip

void MyItem::hoverMoveEvent(QGraphicsSceneHoverEvent* event) 
{ 
    QPointF p = event->pos(); 
    // use p.x() and p.y() to set the tooltip accrdingly, for example: 
    if (p.y() < height()/2) 
     setTooltip("Upper Half"); 
    else 
     setTooltip("Bottom Half"); 
} 

お知らせがあります。

+0

ツールチップは、マウスがホバリングして数秒間移動したときに表示する必要がありますが、マウスが移動した時点では表示されません。これが 'QEvent :: ToolTip'の動作です。 – Paler

関連する問題