【发布时间】:2012-03-19 17:57:22
【问题描述】:
我需要我的 QT 应用程序创建一个表格并将该表格复制到剪贴板,以便以后可以将其作为表格粘贴到 libreoffice Writer 或 MS Word 中。
我的第一种方法是为表格创建 html 代码并将其插入到剪贴板中
QClipboard *clipboard = QApplication::clipboard();
QMimeData *mimeData = new QMimeData();
mimeData->setData("text/html", html.toUtf8());
clipboard->setMimeData(mimeData, QClipboard::Clipboard);
这种方法不起作用。粘贴时,表格单元格只是相互附加并插入而不进行格式化。
我使用 RTF 的第二种方法:
QTextDocument rtfDocument;
rtfDocument.setHtml(html);
但我发现无法将此 QTextDocument 复制到剪贴板中。有没有? 如果我可以从 QTextDocument 中获取 RTF 代码,我可以使用类似的方式
QClipboard *clipboard = QApplication::clipboard();
QMimeData *mimeData = new QMimeData();
mimeData->setData("text/rtf", rtfDocument.getCode());
clipboard->setMimeData(mimeData, QClipboard::Clipboard);
但我也没有找到返回 rtf 代码的函数。
编辑:
使用上面的最后一个代码框,我可以将 rtf 代码复制到剪贴板。因此,任何可以创建表示表格的 RTF 代码的解决方案都可以解决我的问题。
【问题讨论】:
-
根据this SO question 上的回答,您可以使用librtf 进行RTF 处理。我会检查一下。
-
不幸的是 librtf 只允许解析,不能创建 rtf 文件。