【问题标题】:Qt, how to make Tooltip visible without hovering over the control?Qt,如何在不将鼠标悬停在控件上的情况下使 Tooltip 可见?
【发布时间】:2012-09-04 05:23:40
【问题描述】:

我希望当容器小部件获得焦点/可见时工具提示默认可见

我希望工具提示出现而不是鼠标悬停在相应的控件上。

【问题讨论】:

    标签: qt focus hover tooltip visible


    【解决方案1】:

    您需要子类化小部件并覆盖应该产生工具提示显示的事件的处理程序。在处理程序中,创建一个 QEvent::ToolTip 类型的 QHelpEvent 并将其排入事件循环中。最后调用父级的原始处理程序,让它做最初的打算。

    所以专门用于关注按钮,它会是

    class MyButton : public QPushButton {
      virtual void focusInEvent(QFocusEvent *) {
        if(evt->gotFocus()) {
          QPoint pos(0,0);
          QHelpEvent* help = new QHelpEvent(
            QEvent::ToolTip,pos,this->mapToGlobal(pos));
          QCoreApplication::postEvent(this,help);
        }
        QPushButton::focusInEvent(evt);
      }
    }
    

    为了可见性,您将覆盖

    void QWidget::showEvent(QShowEvent * event);
    

    并做类似的代码。您需要根据自己的喜好调整相对 pos,因为最初工具提示取决于您在此处没有的鼠标位置。还要保持非常严格的控制以使您的小部件集中和/或可见。默认情况下,某些内容始终是焦点,因此您会在各处看到工具提示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-25
      • 2019-11-14
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多