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