【问题标题】:How to return QTextEdit RichText as plain text?如何将 QTextEdit RichText 作为纯文本返回?
【发布时间】:2022-01-03 13:39:47
【问题描述】:

我有一个QTextEdit,其textFormat 为Qt::RichText,因此可以使用HTML 标记格式化文本。在这个QTextEdit 上,我有一个QPopupMenu,里面装满了QActions。其中一项操作是连接到SLOT( onClipboardCopy() ) 的简单副本。 QTextEdit 的 copy() 定义为“将任何选定的文本(从选择 0)复制到剪贴板。”
如果有东西被选中,这个功能是完美的。但是,我想在未选择任何内容时复制所有 TextEdit 的内容。
这是插槽:

void WidgetName::onClipboardCopy()
{

    if ( TextEdit->hasSelectedText() )
    {
        TextEdit->copy();
    }
    else
    {
        QClipboard * xClipboard = QApplication::clipboard();
        xClipboard->setText( TextEdit->text() );
    }
}

问题在于 else TextEdit->text() 返回带有所有 HTML 标记的文本。有没有简单的方法来丢弃它们?

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

    好的,我意识到我可以在复制之前选择文本。我通过将代码更改为:

    void WidgetName::onClipboardCopy()
    {
    
        if ( TextEdit->hasSelectedText() )
        {
            TextEdit->copy();
        }
        else
        {
            TextEdit->selectAll();
            TextEdit->copy();
            TextEdit->removeSelection();
    
            //QClipboard * xClipboard = QApplication::clipboard();      
            //xClipboard->setText( TextEdit->text() );
        }
    }
    

    【讨论】:

    • toPlainText() 不工作吗?
    • 我想可以,但是我正在使用没有 toPlainText() 的旧版 Qt。希望我能说服我的老板更新。我在新版本中看到了很多我可以使用的功能,但他有这种“如果它有效,就不要改变它”的心态,这让我抓狂。我必须做很多变通方法并编写已经编写的代码......此外,我在这里问一些已经解决的愚蠢问题。
    • 关于我正在使用没有 toPlainText() 的旧版 Qt。:那么旧? -> plainText: 此属性是在 Qt 4.3 中引入的。
    • @Scheff'sCat QTextEdit::toPlainText () 甚至更早被引入(你可以在 Qt 4.1 中找到它)。无论如何,我想他使用的是相当旧的 Qt(如 Qt3),因为自版本 4 以来没有 QTextEdit::text()。QtextEdit::text() 将文本作为纯文本返回。
    • 没错。 Qt3。更准确地说,3.3.8。
    猜你喜欢
    • 2015-06-05
    • 2021-12-17
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 2016-06-15
    • 2020-12-12
    • 2023-03-08
    相关资源
    最近更新 更多