2017-12-27 2 views
0

특정 위젯에 '라이브'도구 설명이 필요합니다. 위젯은 특정 스레드 활동에 대한 시각적 인터페이스 (기본적으로 진행 상황을 알리는 정보)를 제공합니다. 이 액티비티에서는 일반 메시지를 보내고 이러한 메시지를 위젯의 도구 설명으로 사용할 수있게하려고합니다. 이것은 widget->setToolTip(message);으로 매우 간단하지만 툴팁이 이미 표시되어 있으면 표시된 메시지가 동적으로 업데이트되지 않는 문제가 있습니다. 마우스가 위젯에서 움직이고 도구 팁이 다른 위치에 표시 될 때만 새로 고쳐집니다. 나는 event()QEvent::ToolTip으로 몇 가지 해결책을 찾으려고했으나, QToolTip::showText()QToolTip::hideText()에 글로벌 영향이 있기 때문에 툴팁 메시지가 표시되지 않는 다른 일반적인 위젯에 대한 툴팁을 방해하는 것으로 보입니다. 어떤 아이디어를 해킹하는 방법?도구 설명이 표시 될 때 위젯 도구 팁의 '라이브'업데이트

답변

0

글쎄, 평소와 마찬가지로 나는 해결책을 찾은 직후에 질문을 게시합니다. 메소드 updateToolTip은 도구 설명이 표시되는지 확인하고 마우스 커서가 위젯 (도구 설명이 필요한 하위 위젯이 없다는 전제에 기반 함) 위에있을 때만 텍스트가 '실시간'으로 업데이트됩니다.

void TaskWidget::updateToolTip(const QString &message) 
{ 
    setToolTip(message); 

    if (!QToolTip::isVisible()) 
     return; 

    QPoint p = mapFromGlobal(QCursor::pos()); 
    if (p.x() >= 0 && p.y() >= 0 && p.x() < width() && p.y() < height()) 
     QToolTip::showText(QCursor::pos(), message); 
} 
관련 문제