2017-12-27 17 views
0

特定のウィジェットには「ライブ」ツールチップが必要です。ウィジェットは、特定のスレッド化されたアクティビティーへのビジュアル・インターフェース(基本的に進捗状況を通知)を提供します。このアクティビティは定期的なメッセージを送信し、これらのメッセージをウィジェットのツールヒントとして利用できるようにしたい。これはwidget->setToolTip(message);で実現するのは非常に簡単ですが、ツールチップがすでに表示されている場合、表示されたメッセージが動的に更新されないという問題があります。マウスがウィジェット上を移動し、ツールチップが別の場所に表示されたときにのみ更新されます。私はevent()QEvent::ToolTipでいくつかの解決策を見つけようとしましたが、QToolTip::showText()QToolTip::hideText()にはグローバルな影響があるため、これはツールヒントメッセージが表示されない他の通常のウィジェットのツールヒントと干渉しているようです。任意のアイデアをどのようにこれをハックする?ツールヒントが表示されているときのウィジェットのツールチップの「ライブ」更新

答えて

0

まあ、いつものように、私はSOに質問を投稿した直後に解決策を見つける。メソッドupdateToolTipは、ツールヒントが表示されているかどうか、マウスカーソルがツールチップを必要とする子ウィジェットを持たないという仮定に基づいてマウスカーソルがウィジェット上にある場合のみチェックし、テキストは「ライブ」に更新されます。

void TaskWidget::updateToolTip(const QString &message) 
{ 
    setToolTip(message); 

    if (!QToolTip::isVisible()) 
     return; 

    QPoint p = mapFromGlobal(QCursor::pos()); 
    if (p.x() >= 0 && p.y() >= 0 && p.x() < width() && p.y() < height()) 
     QToolTip::showText(QCursor::pos(), message); 
} 
関連する問題