首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt:省略掉富文本

Qt:省略掉富文本
EN

Stack Overflow用户
提问于 2021-03-01 03:13:01
回答 1查看 142关注 0票数 1

对于明文,有QFontMetrics::elideText (https://doc.qt.io/qt-5/qfontmetrics.html#elidedText)。不过,这不适用于富文本。

我们如何省略Qt中的富文本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-01 03:13:01

此函数可以省略富文本。它使用QTextDocumet来表示富文本,使用QTextCursor来操作富文本。

这可能不是最有效的方法,但它似乎是有效的。

代码语言:javascript
复制
QString elideRichText(const QString &richText, int maxWidth, QFont font) {
    QTextDocument doc;
    doc.setTextMargin(0);
    doc.setHtml(richText);
    doc.adjustSize();

    if (doc.size().width() > maxWidth) {
        // Elide text
        QTextCursor cursor(&doc);
        cursor.movePosition(QTextCursor::End);

        const QString elidedPostfix = "...";
        QFontMetrics metric(font);
#if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)
        int postfixWidth = metric.horizontalAdvance(elidedPostfix);
#else
        int postfixWidth = metric.width(elidedPostfix);
#endif
        while (doc.size().width() > maxWidth - postfixWidth) {
            cursor.deletePreviousChar();
            doc.adjustSize();
        }

        cursor.insertText(elidedPostfix);

        return doc.toHtml();
    }

    return richText;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66412941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档