QLabel sizehint слишком маленький - PullRequest
2 голосов
/ 15 апреля 2011

У меня есть QAbstractItemDelegate, и в методе рисования я пытаюсь нарисовать текст из метки. Но проблема, которую я вижу, состоит в том, что подсказка о размере QLabel всегда слишком мала для текста, который он содержит. Как я могу это исправить? Например:

QLabel *testlabel = new QLabel();
testlabel->setText("This is some test text that doesnt fit:");
testlabel->adjustSize();

QRect rect(testlabel->geometry());
Qt::Alignment alignFlags = testlabel->alignment();

painter->setFont(testlabel->font());
painter->drawRect(rect);
painter->drawText(rect, alignFlags, testlabel->text());

А потом это выглядит так:

Screenshot

Есть идеи, почему ограничивающий прямоугольник слишком мал? Спасибо Стивен

Ответы [ 2 ]

5 голосов
/ 15 апреля 2011

Если вы просто пытаетесь нарисовать ограничивающий прямоугольник (или что-то связанное), вы должны получить метрики шрифта художника и попросить ограничивающий прямоугольник для текста, который вы хотите отобразить. Существуют различные версии QFontMetrics :: boundingRect , которые позволят вам указать содержащий прямоугольник, так что будет учитываться перенос слов.

1 голос
/ 15 апреля 2011

почему бы вам не использовать virtual QSize QLabel::sizeHint () const для получения sizehint?это кажется более надежным, потому что adjustSize();geometry() зависит от того, как ярлык на самом деле нарисован.но вы не рисуете метку (QWidget), а только ее текст (QString), поэтому adjustSize/geometry более вероятно потерпит неудачу, чем sizeHint.

см .: http://doc.qt.io/qt-4.8/qwidget.html#sizeHint-prop

РЕДАКТИРОВАТЬ: о, и использование sizeHint также упростит ваш код ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...