QLabel sizehint太小

时间:2011-04-15 17:03:37

标签: qt qt4

我有一个QAbstractItemDelegate,在paint方法中,我试图从标签中绘制文本。但我看到的问题是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 个答案:

答案 0 :(得分:5)

如果你只是想绘制一个边界矩形(或相关的东西),你应该得到画家的字体指标,并要求你想要显示的文本的边界矩形。有QFontMetrics::boundingRect的不同版本允许您指定包含的矩形,因此将考虑自动换行。

答案 1 :(得分:1)

为什么不使用virtual QSize QLabel::sizeHint () const来获取sizehint?它似乎更可靠,因为adjustSize();geometry()取决于实际绘制到某物上的标签。但是你没有绘制标签(QWidget),只是它的文本(QString),所以adjustSize/geometrysizeHint更容易失败。

请参阅:http://doc.qt.io/qt-4.8/qwidget.html#sizeHint-prop

编辑:哦,使用sizeHint也会简化您的代码...