Я подключаю слот к сигналу dataChanged QClipboard, чтобы сохранить изображение в буфере обмена для переменной mimedata ( reference ):
void MyWin::clipboardDataChanged()
{
const QMimeData * m=QApplication::clipboard()->mimeData();
mimedata = new QMimeData();
foreach(QString format, m->formats())
{
QByteArray data = m->data(format);
if(format.startsWith("application/x-qt"))
{
int index1 = format.indexOf('"') + 1;
int index2 = format.indexOf('"', index1);
format = format.mid(index1, index2 - index1);
}
mimedata->setData(format, data);
}
}
И восстановить mimedata в буфер обмена следующим образом :
void MyWin::onrestore()
{
QApplication::clipboard()->setMimeData(mimedata);
}
Однако набор данных в буфер обмена поврежден. Если я вставляю из буфера обмена в Paint, он говорит: «Информация из буфера обмена не может быть вставлена в Paint». Я распечатал формат данных в буфере обмена, т. Е. «Application / x-qt-image». Поэтому я думаю, что это не тот формат, который поддерживается другими приложениями. Это ошибка Qt или код неисправен?