当容器小部件获得焦点/可见时,我希望工具提示默认可见。
我希望在鼠标悬停在相应控件上的情况下显示工具提示。
最佳答案
您需要对小部件进行子类化并覆盖应生成工具提示显示的事件的处理程序。在处理程序中,创建一个 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/