Qt自定义行间距
QString contentStr = "11111111111111111111111111112222222333。\n"
"1111111\n333333333333333333,"
"555555555555555。\n"
"6666666\n77777777777777777777777777777777777777777。";
QFont font;
font.setPixelSize(14);
painter.setFont(font);
painter.setPen(QColor("#000000"));
QRect frame = this->rect().adjusted(10,10,-10,-10);
QFontMetrics fontMetrics(font);
int lineSpacing = fontMetrics.lineSpacing();
int customLineSpacing = lineSpacing * 1.5;
QStringList lines = contentStr.split('\n');
int y = frame.top()+ fontMetrics.ascent();
for (const QString &line : lines)
{
if (fontMetrics.width(line) <= frame.width())
{
painter.drawText(QPoint(frame.left(), y), line);
y += customLineSpacing;
}
else
{
QString currentLine = "";
for (int i = 0; i < line.length(); ++i)
{
QString testLine = currentLine + line[i];
if (fontMetrics.horizontalAdvance(testLine) > frame.width())
{
painter.drawText(QPoint(frame.left(), y), currentLine);
y += customLineSpacing;
currentLine = line[i];
}
else {
currentLine = testLine;
}
if((i == line.length()-1) && !currentLine.isEmpty())
{
painter.drawText(QPoint(frame.left(), y), currentLine);
y += customLineSpacing;
break;
}
}
}
}
1341

被折叠的 条评论
为什么被折叠?



