2014-02-18 3 views
0

C++ Qt를 사용하여 GUI로 응용 프로그램을 코딩하고 있습니다. 정확한 기능을 추가하고 싶습니다. 사용자 정의 클래스를 상속 받고 있습니다. QLabel 객체를 패널에 배치하고이 영역 위에 마우스 커서로 정보를 표시하고 싶으면 정보는이 정확한 패널에서 커서 좌표의 텍스트 함수가됩니다. 나는 그것을 구현하는 예제를 살펴 보았습니다.하지만 지금은 내 연구가 비슷한 것을 반환하지 않기 때문에 필요한 객체에 대해 정말로 모호한 생각을 가져야한다고 생각합니다. 그것을 구현하는 방법에 대한 아이디어가 있습니까?Qt : QLabel 객체 위에 마우스 커서 아래에 텍스트가 표시됩니다.

미리 감사드립니다.

편집 : 명백하게 QToolTip 객체 내가 찾고 있어요 무엇하지만 마우스가 위에있을 경우에만 표시 할 것로, MouseEvent와 연관시킬 필요가 http://qt-project.org/doc/qt-4.8/qtooltip.html

를 : 밀어 내 연구는이를 알려준 QLabel, 그걸 살펴보기 ... 물론 조언은 여전히 ​​환영합니다.)

답변

1

왜 paintEvent를 다시 구현하지 않고 void QPainter::drawText (const QPoint & position, const QString & text) 메서드를 사용합니까?

+0

안녕하세요. 제안에 감사드립니다. QToolTip 객체가 만족스럽지 않아서 뭔가를 다시 구현해야 할 수도 있습니다 (QLabel 위에 마우스를 올리면 실제로 나타나지 않습니다). 드로잉에 사용 된 QLabel 위에 솔루션이 나에게 깔끔하게 나타나는 것을 줄 수 있다고 생각합니까? (나는 이것을 묻고있어 시험 중이다 ...) –

+0

@Learningisamess 나는 그것에 대해 잠시 생각한다. 왜 자신의 툴팁 클래스를 구현하지 않습니까? 뭔가 그런 것 - ToolTip :: ToolTip (const QString & text) : QLabel (0, Qt :: ToolTip | Qt :: BypassGraphicsProxyWidget) {setText (text)}. 그런 다음 레이블의 mouseMoveEvent에서 tooltip-> move (event-> getGlobalPos())를 호출하십시오. 이렇게하면 툴팁을 절대적으로 제어 할 수 있습니다. – gooddocteur

1

바라기를이 시도는 이미 시도했지만 작동하지 않았습니다. 그러나 귀하의 답변에서 그것은 대신 이라는 도구 팁을 지원하는 QToolTip 개체를보고있는 것처럼 보입니다.

그런데 QLabel에서 파생 된 사용자 지정 클래스가 이미있는 경우 마우스 이벤트를 가로 채고 도구 설명 메시지를 설정할 수 있습니다. 예 :

bool MyLabelClass::event (QEvent* event) 
{ 
    if(event.type() == QEvent::MouseMove) 
    { 
     QMouseEvent mouseEvent = dynamic_cast< QMouseEvent* >(event); 

     if(mouseEvent) 
     { 
      QString toolTipStr("Mouse is at x:%1, y:%2"); 
      toolTipStr.arg(mouseEvent.globalX(), mouseEvent.globalY()); 
      setToolTip(toolTipStr); 
     } 
    } 

    // Always return false as we aren't blocking the event. 
    return false; 
} 
관련 문제