当容器小部件获得焦点/可见时,我希望工具提示默认可见。
我希望工具提示出现在相应控件上无需鼠标悬停。
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
,因为原来的工具提示依赖于鼠标位置,而这里没有鼠标位置。同时要非常严格地控制使您的小部件聚焦和/或可见。默认情况下,某些东西一直处于焦点状态,因此您将在各个地方获得工具提示。