2012-09-11 3 views

답변

1

위젯을 서브 클래스 화하고 툴팁 표시를 생성해야하는 이벤트에 대한 핸들러를 대체해야합니다. 처리기에서 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을 조정해야합니다. 또한 위젯을 집중시키고 볼 수 있도록 매우 세밀하게 제어하십시오. 기본적으로 무언가는 항상 포커스를 얻으므로 모든 곳에서 툴팁을 얻을 수 있습니다.

관련 문제