效果展示
实例代码
QString city = QString::fromLocal8Bit("北京、上海");
QStringList cities = city.split("、");
int x = rect.left();
int fontHeight = painter->fontMetrics().height();
for (int i = 0; i < cities.size(); ++i) {
painter->drawText(x, rect.top(), rect.width(), rect.height(), Qt::AlignLeft | Qt::AlignVCenter, cities[i]);
QPixmap pixmap(QString::fromLocal8Bit("../Data/TestImage/china.png"));
int textWidth = painter->fontMetrics().width(cities[i]) + 2;
QPixmap scaledPixmap = pixmap.scaledToHeight(fontHeight, Qt::SmoothTransformation);
// 计算图标垂直居中的位置
int iconY = rect.top() + (rect.height() - scaledPixmap.height()) / 2;
painter->drawPixmap(x+ textWidth , iconY, scaledPixmap.width(), scaledPixmap.height(), scaledPixmap);
//painter->drawText(x+ textWidth + scaledPixmap.width()+1, iconY, rect.width(), rect.height(), Qt::AlignLeft | Qt::AlignVCenter, "、");
// 只在不是最后一个元素时添加"、"
if (i < cities.size() - 1) {
painter->drawText(x+ textWidth + scaledPixmap.width()+1, rect.top(), rect.width(), rect.height(), Qt::AlignLeft | Qt::AlignVCenter, "、");
x += painter->fontMetrics().width("、") + 2; // 增加“、”的宽度和间距
}
x += textWidth + rect.height() + 5; // 增加间距,避免图标重叠