4

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

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

4

1 回答 1

4

您需要子类化小部件并覆盖应该产生工具提示显示的事件的处理程序。在处理程序中,创建一个QHelpEvent类型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);
  }
}

为了可见性,您将覆盖

void QWidget::showEvent(QShowEvent * event);

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

于 2012-09-12T11:25:30.880 回答