0

我想知道是否有人知道将 qt 场景复制到剪贴板然后能够将其作为分组对象粘贴到 word 中的第一件事。我的场景中只有图形文本项、椭圆和线条。它似乎可以制成形状、线条和文本,可以作为一个组粘贴到 PowerPoint 中。我不知道从哪里开始!有任何想法吗?谢谢!

4

1 回答 1

4

我会以两种方式对此进行攻击:

从系统角度和office sdk 角度。

从系统的角度来看,您正在谈论剪贴板、mime 类型以及剪贴板中存储的确切内容。

从 office sdk 的角度来看,您正在谈论它如何存储预渲染元素。

快速浏览一下,我在 MS Office SDK 中找到了以下信息:

http://msdn.microsoft.com/en-US/library/office/gg278315

http://msdn.microsoft.com/en-US/library/office/cc850847

这在剪贴板管理器上:

http://en.wikipedia.org/wiki/Clipboard_manager

这用于与剪贴板的 Qt 连接:

http://qt-project.org/doc/qt-4.8/qclipboard.html#details

现在......从那开始,我写了一小段代码:

我将 aQPushButton和 a添加QTextEdit到 MainWindow UI 窗体。然后我走到按钮的插槽并输入以下内容:

void MainWindow::on_pushButton_clicked()
{
    ui->textEdit->clear();
    QClipboard *c = QApplication::clipboard();
    foreach(QString format, c->mimeData()->formats())
    {
        ui->textEdit->append(format);
        ui->textEdit->append(c->mimeData()->data(format));
    }
    ui->textEdit->append("done");
}

我从 Office 2010 的 PowerPoint 中复制了一个椭圆和一个矩形,

在此处输入图像描述

然后在我的程序中使用按钮。这是它给我的输出:

application/x-qt-windows-mime;value="Preferred DropEffect"

application/x-qt-windows-mime;value="InShellDragLoop"

application/x-qt-windows-mime;value="PowerPoint 12.0 Internal Shapes"
ÀN
application/x-qt-windows-mime;value="Object Descriptor"
j
application/x-qt-windows-mime;value="Art::GVML ClipFormat"
PK
application/x-qt-windows-mime;value="PNG"
PNG


application/x-qt-image

application/x-qt-windows-mime;value="JFIF"
ÿØÿà
application/x-qt-windows-mime;value="GIF"
GIF89aã
application/x-qt-windows-mime;value="PowerPoint 12.0 Internal Theme"
Hý©
application/x-qt-windows-mime;value="PowerPoint 12.0 Internal Color Scheme"
Pý©
done

所以它应该是可行的,但你需要弄清楚它们在可读明文之间编码的一些东西是什么。

希望有帮助。

PS 尝试将 Qt 元素保存为 SVG 对象或剪贴板上的其他图像可能会更好。

于 2013-09-10T23:42:32.343 回答