C++ 具有自动缩放功能的QLabel
我需要一个Qt小部件,它可以显示自动缩放的纯文本。这意味着,当我调整布局中包含此小部件的窗口大小时,字体大小将调整为小部件的大小,以尽可能大的字体显示文本,以适应布局指定的大小。换行是一个可能的好处C++ 具有自动缩放功能的QLabel,c++,qt,widget,C++,Qt,Widget,我需要一个Qt小部件,它可以显示自动缩放的纯文本。这意味着,当我调整布局中包含此小部件的窗口大小时,字体大小将调整为小部件的大小,以尽可能大的字体显示文本,以适应布局指定的大小。换行是一个可能的好处 我想,有人已经实现了这样的小部件,但我无法用谷歌搜索它。您可以在窗口的调整大小事件中执行此操作: void MainWindow::resizeEvent(QResizeEvent*) { QFont f = label->font(); //Get label font Q
我想,有人已经实现了这样的小部件,但我无法用谷歌搜索它。您可以在窗口的调整大小事件中执行此操作:
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
}
不知道是不是只有我(使用Qt5.7),但这会产生巨大的文本。这可能是由于文本的长度(这是计算的一部分),但也可能是由于其他因素,例如标签的大小调整策略。