2013-07-02 3 views
0

Мой QRect объект - это фиксированный размер обычного текста, когда текста слишком много, я бы обрезал текст и след ... в конце. Например, Longlonglonglong усечен до Longlong.... Но я хочу отображать полноразмерный текст в пузыре, когда указатель мыши находится над прямоугольником.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(..) не поддерживают его. К счастью, вы можете предварительно игнорировать текст для него («eliding», где вы усечение с elipsis) с помощью QFontMetrics:

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); 

Когда вы говорите, «текст в пузыре, когда указатель мыши находится над», я полагаю, вы имеете в виду всплывающую подсказку - в этом случае реализуйте ее для виджета как обычно и дайте полный текст, а не пройденный.

Смежные вопросы