Qt,如何在不将鼠标悬停在控件上的情况下使工具提示可见?

use*_*454 5 qt focus tooltip hover visible

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

我希望工具提示显示而无需将鼠标悬停在相应的控件上。

Pav*_*nek 6

您需要对小部件进行子类化并覆盖应生成工具提示显示的事件的处理程序。在处理程序中,创建一个QHelpEventof 类型QEvent::ToolTip并将其放入事件循环中。最后调用父级的原始处理程序,让它执行最初的意图。

因此,专门为了将焦点集中在按钮上,这将是

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);
  }
}
Run Code Online (Sandbox Code Playgroud)

为了可见性你会覆盖

void QWidget::showEvent(QShowEvent * event);
Run Code Online (Sandbox Code Playgroud)

并执行类似的代码。您需要根据pos您的喜好进行调整,因为最初的工具提示取决于鼠标位置,而您在这里没有。还要严格控制您的小部件的焦点和/或可见性。默认情况下,某些内容始终会获得焦点,因此您会在各处获得工具提示。