【Qt】QTooltip文本自动折行显示

本文介绍了一种在Qt中实现QTooltip内长文本自动换行的方法,通过自定义类TMyTextLabel并重写构造函数来计算并插入换行符,确保提示框中的文本能够适配显示宽度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当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);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值