You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将QTextEdit的RichText富文本内容以纯文本格式返回?

解决方案

第一种是最直接的修改方法,利用QTextEdit原生的toPlainText()接口,直接替换你现有代码里的text()即可:

void WidgetName::onClipboardCopy()
{
    if ( TextEdit->hasSelectedText() )
    {
        TextEdit->copy();
    }
    else
    {
        QClipboard * xClipboard = QApplication::clipboard();
        // 替换text()为toPlainText()即可直接获取无HTML标签的纯文本
        xClipboard->setText( TextEdit->toPlainText() );
    }
}

toPlainText()是Qt为富文本编辑组件提供的原生方法,会自动过滤所有HTML格式标签,保留文本内容和换行、缩进等基础排版,不需要自己实现HTML解析逻辑。


第二种方案可以对齐系统默认复制行为,无选中时先全选内容,再调用原生copy()方法,复制完成后取消选中即可。这种方法的优势是剪贴板会同时存入富文本和纯文本两种格式,粘贴到支持富文本的编辑器时可以保留原有格式,粘贴到纯文本场景时自动展示纯文本,和QTextEdit默认的选中复制行为完全一致:

void WidgetName::onClipboardCopy()
{
    if ( TextEdit->hasSelectedText() )
    {
        TextEdit->copy();
    }
    else
    {
        // 临时全选内容
        TextEdit->selectAll();
        // 调用原生copy接口,同时写入富文本、纯文本到剪贴板
        TextEdit->copy();
        // 清空选中状态,还原界面表现
        QTextCursor cursor = TextEdit->textCursor();
        cursor.clearSelection();
        TextEdit->setTextCursor(cursor);
    }
}

如果是需要对任意HTML字符串做通用纯文本提取,也可以借助QTextDocument实现:

QString htmlToPlainText(const QString& html)
{
    QTextDocument doc;
    doc.setHtml(html);
    return doc.toPlainText();
}

内容的提问来源于stack exchange,提问作者korksz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:45:04