2017-12-27 270 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); 
}