当QTooltip中待显示的文字太长时,需要对文字进行换行,如此必须在文本中恰当位置插入换行符"\n"。具体实现如下:
class TMyTextLabel : public QLabel
QString TMyTextLabel::TMyTextLabel(const QString &org)
{
QString result;
QFontMetrics fm(fontMetrics());
int textWidthInPxs = fm.width(org);
const int rear = org.length();
int pre = 0, vernier = 1;
unsigned int pickUpWidthPxs = 0;
QString pickUp;
unsigned int curLen = 0;
if (textWidthInPxs <= width())
{
result = org;
return result;
}
while (vernier <= rear)
{
curLen = vernier - pre;
pickUp = org.mid(pre, curLen);
pickUpWidthPxs = fm.width(pickUp);
if (pickUpWidthPxs >= width())
{
result += pickUp + "\n"; // 插入换行符,或者使用<br/>标签
pre = vernier;
pickUpWidthPxs = 0;
}
++vernier;
}
if (pickUpWidthPxs < width() && !pickUp.isEmpty())
{
result += pickUp;
}
return result;
}
QLabel label;
TMyTextLabel myLabel;
QString TMyTextLabel = myLabel.TMyTextLabel("123456789987654321abcdefghijk");
label.setTooltip(TMyTextLabel);