我正在制作一个小型 Qt/Pyside2/QML 应用程序,其全部目的是方便地生成和复制一些文本以粘贴到另一个程序中。(以防万一,它是https://lackeyccg.com/;我怀疑唯一可能相关的事实是它太老了,根本不能很好地与 Unicode 兼容。)我目前正在运行macOS 10.13,以防特定剪贴板相关。
在 PySide 中,我像这样复制文本:
clipboard = QGuiApplication.clipboard() clipboard.setText(text_to_copy)
调用clipboard.mimeData().formats()告诉我数据格式为text/plain. 切换到文本编辑器、网络浏览器等并粘贴就可以了。此外,如果我然后选择我粘贴的内容,复制它,并将其粘贴到 LackeyCCG 中,一切又都很好。不幸的是,在 Qt 中复制后直接粘贴到 LackeyCCG 会使 Lackey 崩溃。
我已经用几个测试字符串验证了这一点,排除了非 ASCII 字符或换行符等可能的原因;似乎唯一不会导致崩溃的是空字符串。
我猜这与 Qt 提供的文本格式有关。通过osascript -e 'the clipboard as record' | less在命令行上运行,我可以检查系统剪贴板的内容。从多个文本编辑器以及 Chrome 复制的文本包含格式<<class utf8>>、<<class ut16>>和string。(string奇怪的是,该版本的换行符被回车符代替了。)相比之下,从我的 Qt 应用程序复制的文本包含string, Unicode text, 和<<class ut16>>(并且它string有普通的换行符)。
我对文本编码的细节没有最严格的把握,但这里的操作差异似乎可能是缺少 UTF-8 版本。显然,大多数现代应用程序都足够聪明,可以解释 Qt 提供给它们的内容,即使它与大多数应用程序显然产生的内容不同。但是对于我们这些试图粘贴到废弃软件中的人来说,有没有办法强制 Qt/PySide2 以特定格式输出文本?(或者对问题可能是什么的任何见解,如果不是的话?)
慕容3067478
忽然笑
随时随地看视频慕课网APP
相关分类