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

Qt,如何使工具提示在不悬停在控件上的情况下可见?,qt,focus,hover,tooltip,visible,Qt,Focus,Hover,Tooltip,Visible,当容器小部件获得焦点/可见时,我希望工具提示在默认情况下可见 我希望工具提示不会出现在相应控件上的鼠标悬停状态。您需要对小部件进行子类化,并覆盖事件的处理程序,该事件应生成工具提示显示。在处理程序中,创建类型为QEvent::ToolTip的QHelpEvent,并在事件循环中将其排队。最后调用父级的原始处理程序,让它执行最初打算执行的操作 所以,特别是为了关注按钮,它将是 class MyButton : public QPushButton { virtual void focusInE

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


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

您需要对小部件进行子类化,并覆盖事件的处理程序,该事件应生成工具提示显示。在处理程序中,创建类型为
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
,因为最初的工具提示依赖于鼠标位置,而这里没有。同时,要严格控制小部件的焦点和/或可视性。默认情况下,某些内容始终处于焦点位置,因此您将在整个位置获得工具提示