Qt,如何在不悬停在控件上方的情况下使Tooltip可见?

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

我想要工具提示出现而不会将鼠标悬停在相应的控件上.

最佳答案 您需要子类化窗口小部件并覆盖应该生成工具提示显示的事件的处理程序.在处理程序中,创建一个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);

并做类似的代码.您需要根据自己的喜好调整相对位置,因为最初的工具提示取决于您在此处没有的鼠标位置.同时保持对小部件集中和/或可见的小部件的严密控制.默认情况下,某些内容会一直处于焦点状态,因此您将获得整个工具提示.

点赞