QLabel具有自动缩放功能

时间:2015-04-25 00:29:08

标签: c++ qt widget

我需要一个显示自动缩放的纯文本的Qt小部件。这意味着当我在其布局中调整具有此窗口小部件的窗口时,将字体大小调整为窗口小部件的大小,以尽可能大地显示字体中的文本以适合布局所指示的大小。自动换行可能是一种奖励。

我认为,有人已经实现了这样的小部件,但我无法谷歌。

1 个答案:

答案 0 :(得分:2)

您可以在窗口的resize事件中执行此操作:

void MainWindow::resizeEvent(QResizeEvent*)
{
    QFont f = label->font(); //Get label font

    QFontMetrics metrics(f);
    QSize size = metrics.size(0, label->text()); //Get size of text
    float factorw = label->width() / (float)size.width(); //Get the width factor
    float factorh = label->height() / (float)size.height(); //Get the height factor

    float factor = qMin(factorw, factorh); //To fit contents in the screen select as factor
                                           //the minimum factor between width and height

    f.setPointSizeF(f.pointSizeF() * factor); //Set font size
    label->setFont(f); //Set the adjusted font to the label
}