コンテナー ウィジェットがfocus/visibleを取得したときに、デフォルトでツールチップが表示されるようにします。
それぞれのコントロールにマウスを合わせることなくツールチップを表示したい。
ウィジェットをサブクラス化し、ツールチップ表示を生成するイベントのハンドラをオーバーライドする必要があります。ハンドラーでQHelpEvent
of 型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
もともとツールチップはここにはないマウスの位置に依存するため、好みに合わせて調整する必要があります。また、ウィジェットをフォーカスおよび/または可視化することを非常に厳密に制御してください。デフォルトでは、何かが常にフォーカスされるため、ツールチップがいたるところに表示されます。