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

标签 qt focus hover tooltip visible

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

我希望在鼠标悬停在相应控件上的情况下显示工具提示。

最佳答案

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

关于Qt,如何在不将鼠标悬停在控件上的情况下使工具提示可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12367022/

相关文章:

jquery - 我可以在 jquery 悬停时制作两个具有不同不透明度的图像吗

c++ - QML 中的 anchors.baseline

c++ - 多个线程,一次一个读/写

c++ - 通过在 QT QML 中单击鼠标来重复矩形

javascript - 在 focus() 事件中调用时,alert() 函数正在循环

html - 将鼠标悬停在其中的特定元素上时如何不触发表行的悬停效果

c++ - QListWidget共享同一个模型

android - 如何检测任何 subview 何时收到点击

javascript - 仅关注与警报一起工作

css - 我正在尝试使用此 codepen CSS 效果,但缩放效果不太有效。