2013-07-02 3 views
0

QRect 객체는 일반 텍스트의 고정 크기 컨테이너입니다. 텍스트가 너무 많으면 텍스트가 잘리고 마지막에 ...이 나옵니다. 예를 들어 LonglonglonglongLonglong...으로 잘립니다. 그러나 마우스 포인터가 rect 위에있을 때 풍선 안에 전체 길이 텍스트를 표시하려고합니다.Qt - 마우스가 QRect 객체 위에있을 때 거품 팝업 팝업

거품은 Go to Google Home 같다 :
enter image description here

이 가능합니까?

+2

'QRect'는 사각형을 설명하는 기하학적 형식입니다. 즉, '포함'할 수 없습니다. 너는 실제로 무엇을 사용하고 있는가? – cmannett85

+0

@ cmannett85 나는 이것을 사용하고있다. void QPainter :: drawText (const QRectF & rectangle, int flags, const QString & text, QRectF * boundingRect = 0)'. 어쩌면 '컨테이너'가 적절하지 않을 수도 있습니다. – CDT

답변

2

불행히도 QPainter은이를 수행 할 수 없습니다. drawText(..) 플래그는 지원하지 않습니다. 다행히, 당신은 QFontMetrics을 사용 (당신이 elipsis로 잘라 여기서 "eliding"입니다) 그것을 위해 텍스트를 사전에 제거하다 할 수 있습니다

QFontMetrics fontM(QApplication::font()); 
QRect r(0, 0, 30, 10); 
QString text = "Longlonglonglong"; 
QString elidedText = fontM.elidedText(text, Qt::ElideRight, r.width()); 

painter->drawText(r, Qt::AlignLeft, elidedText); 

당신이 "마우스 포인터가 끝난 거품 텍스트"내가 감히 말할 때 툴팁을 의미하며, 위젯을 정상적으로 구현하고 생략 된 텍스트가 아닌 전체 텍스트를 제공합니다.

관련 문제