===== 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 (); }