gpt4 book ai didi

python - 使用 QClipboard,如何复制富文本并将其降级为文本编辑器的纯文本?

转载 作者:行者123 更新时间:2023-12-01 06:01:52 25 4
gpt4 key购买 nike

我有一个预先存在的函数,可以生成富文本/html 报告。我的应用程序在工具提示中显示此报告。我添加了使用以下代码将此报告复制到剪贴板的功能:

    reportRichText = generateReport()
clipboard = QApplication.clipboard()
reportRichTextMime = QMimeData()
reportRichTextMime.setHtml(reportRichText )
clipboard.setMimeData(reportRichTextMime)

这允许我复制报告并将其粘贴到接受富文本的任何内容中。例如,我可以将报告精细地粘贴到 MS Word 中。但是,问题是我无法粘贴到纯文本编辑器中。我只是有一个灰色的“粘贴”选项,就好像没有什么可粘贴的一样。另一个有趣的花絮,如果我使用 MS Word 执行“选择性粘贴”,我只能选择粘贴为“HTML 格式”,不会列出纯文本选项。

当然,如果我只是使用 QClipboard 复制为纯文本,我可以复制粘贴到任何我想要的地方。不过,我正在复制/粘贴所有标记。这显然是我不想要的。我想要富文本或非标记纯文本。

我期望的行为是从网络浏览器复制/粘贴文本时得到的行为。对于接受富文本的应用程序,将粘贴富文本(此外,MS Word 将允许您粘贴为纯文本或富文本)。对于纯文本编辑器,未渲染的纯文本将粘贴到纯文本编辑器中。

如何使用 QClipboard 获取也可以粘贴为纯文本的富文本?

最佳答案

嗯,我很确定执行此操作的正确方法是在 QMimeData 上调用两者 setText 和 setHtml。来自 QT docs for QMimeData :

A single QMimeData object can store the same data using several different formats at the same time

IE 如果你这样做:

reportRichText = generateReport()
clipboard = QApplication.clipboard()
reportRichTextMime = QMimeData()
reportRichTextMime.setHtml(reportRichText)
reportRichTextMime.setText("hello!")
clipboard.setMimeData(reportRichTextMime)

然后你会得到:

hello!

pasted into editors accepting plain-text and my pretty report in editors accepting rtf text. This is because "hello!" is the plain-text representation of the data, while my report is the HTML representation.

For my report, I just decided to go back and figure out a way to generate the report in both HTML and plain text which wasn't as annoying or difficult as I thought it would be. So in effect what I have now is:

reportRichText = generateReport(rtf=True)
reportPlainText = generateReport(rtf=False)
clipboard = QApplication.clipboard()
reportRichTextMime = QMimeData()
reportRichTextMime.setHtml(reportRichText)
reportRichTextMime.setText(reportPlainText)
clipboard.setMimeData(reportRichTextMime)

这似乎可以解决问题

关于python - 使用 QClipboard,如何复制富文本并将其降级为文本编辑器的纯文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10055421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com