===== Clipboard =====
Kopírování dat do schránky používá **QMimeData** stejně jako //drag and drop//. \\
Zavedeme si další formát dat //application/x-shape//, který opět bude přenášet řětězec znaků. \\
V tomto případě do řětězce znaků uložíme XML s právě vybranými grafickými prvky. \\
//Pokud máme vybrané grafické prvky vnořené do jiných, tak to nemám dobře vyřešené.//
Soubor **demo.cc**
void MainWindow::on_actionCopy_triggered ()
{
QString code = "";
QXmlStreamWriter writer (& code);
writeBegin (writer);
for (QGraphicsItem * item : scene->selectedItems ())
{
writeItem (writer, item);
}
writeEnd (writer);
QMimeData * data = new QMimeData;
data->setData (shapeFormat, code.toLatin1 ());
QClipboard * clip = QApplication::clipboard ();
clip->setMimeData (data);
}
Podobně //"paste"//. \\
Ze schránky vyzvedneme QMimeData. \\
Pokud obsahují náš formát, uložíme řetězec znaků do proměnné **code** a použijeme již známé funkce pro čtení XML.
void MainWindow::on_actionPaste_triggered ()
{
QClipboard * clip = QApplication::clipboard ();
const QMimeData * data = clip->mimeData ();
if (data->hasFormat (shapeFormat))
{
QString code = data->data (shapeFormat);
QXmlStreamReader reader (code);
readXml (reader, scene);
}
refreshTree ();
}