const qreal maxWidth = itemWidth - 2 * option.padding;
QTextLine line;
+ int emptyRolesCount = 0;
+ foreach (const QByteArray& role, view->visibleRoles()) {
+ const QString text = roleText(role, values);
+ if (role != "text" && role != "rating" && text.isEmpty()) {
+ emptyRolesCount++;
+ }
+ }
+
// Calculate the number of lines required for wrapping the name
QTextOption textOption(Qt::AlignHCenter);
textOption.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
layout.endLayout();
// Add one line for each additional information
- textHeight += additionalRolesCount * option.fontMetrics.lineSpacing();
+ textHeight += (additionalRolesCount - emptyRolesCount) * option.fontMetrics.lineSpacing();
const qreal maxTextHeight = option.maxTextSize.height();
if (maxTextHeight > 0 && textHeight > maxTextHeight) {
qreal nameHeight = 0;
QTextLine line;
+ int emptyRolesCount = 0;
+ foreach (const QByteArray& role, visibleRoles()) {
+ const QString text = roleText(role, values);
+ if (role != "text" && role != "rating" && text.isEmpty()) {
+ emptyRolesCount++;
+ }
+ }
+
const int additionalRolesCount = qMax(visibleRoles().count() - 1, 0);
- const int maxNameLines = (option.maxTextSize.height() / int(lineSpacing)) - additionalRolesCount;
+ const int maxNameLines = (option.maxTextSize.height() / int(lineSpacing)) -
+ (additionalRolesCount - emptyRolesCount);
QTextLayout layout(nameTextInfo->staticText.text(), m_customizedFont);
layout.setTextOption(nameTextInfo->staticText.textOption());
nameTextInfo->staticText.setTextWidth(maxWidth);
nameTextInfo->pos = QPointF(padding, widgetHeight -
nameHeight -
- additionalRolesCount * lineSpacing -
+ (additionalRolesCount - emptyRolesCount)* lineSpacing -
padding);
m_textRect = QRectF(padding + (maxWidth - nameWidth) / 2,
nameTextInfo->pos.y(),
}
const QString text = roleText(role, values);
+
+ if (role != "text" && role != "rating" && text.isEmpty()) {
+ continue;
+ }
+
TextInfo* textInfo = m_textInfo.value(role);
textInfo->staticText.setText(text);