将qt场景作为PowerPoint对象复制到剪贴板

时间:2013-09-10 21:44:30

标签: qt powerpoint

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

1 个答案:

答案 0 :(得分:4)

我会以两种方式攻击这个:

从系统角度和办公室角度来看。

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

从办公室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

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

我在MainWindow UI表单中添加了QPushButtonQTextEdit。然后我去按钮的插槽并输入以下内容:

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中复制了一个椭圆形和一个矩形,

enter image description here

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

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对象或其他图像。