4
컨테이너 위젯이 포커스/표시이되면 툴팁을 으로 표시하고 싶습니다.Qt, 컨트롤 위에 마우스를 올려 놓지 않고 도구 설명을 표시하는 방법은 무엇입니까?
해당 컨트롤에서 마우스를 가리 키지 않고 툴팁을 표시하려고합니다.
컨테이너 위젯이 포커스/표시이되면 툴팁을 으로 표시하고 싶습니다.Qt, 컨트롤 위에 마우스를 올려 놓지 않고 도구 설명을 표시하는 방법은 무엇입니까?
해당 컨트롤에서 마우스를 가리 키지 않고 툴팁을 표시하려고합니다.
위젯을 서브 클래스 화하고 툴팁 표시를 생성해야하는 이벤트에 대한 핸들러를 대체해야합니다. 처리기에서 QEvent::ToolTip
유형의 QHelpEvent
을 만들고 이벤트 루프에 대기열에 추가합니다. 마지막으로 부모의 원래 처리기를 호출하여 원래 의도 한대로 처리하도록합니다.
그래서 특정 버튼에 초점을 얻기 위해, 그것은 가시를 들어 당신이
void QWidget::showEvent(QShowEvent * event);
을 무시하고 유사한 코드를 할 것
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);
}
}
될 것이다. 원래 툴팁은 여기에없는 마우스 위치에 의존하기 때문에 상대적으로 pos
을 조정해야합니다. 또한 위젯을 집중시키고 볼 수 있도록 매우 세밀하게 제어하십시오. 기본적으로 무언가는 항상 포커스를 얻으므로 모든 곳에서 툴팁을 얻을 수 있습니다.