@AliReza-Beytari
So to enable drops to the filesystem you should add a file urls (using QMimeData::setUrls() for example).
For photoshop it might be enough to set a image on the mimedata (using QMimeData::setPixmap())
Take a look at the Delayed encoding example.
The interesting part here is the QMimeData::retrieveData() overload. This method gets called when a drop happens.
So when a drop to the filesystem happens the mimedata requests the data and calls retrieveData(). In there you write your pixmap data to a temporary image file. For that you can use QTemporaryFile class for example. Write the data to the temporary file and return the url to the file. Mime-Type: "text/uri-list"
Analog for the pixmap image. Simply return the QPixmap. Mime-Type: "image/png"
Actually it could also be necessary to return the PNG binary data. I am not sure. This can be done like this:
QPixmap pixmap;
QByteArray data;
QBuffer buffer(&data);
buffer.open(QIODevice::WriteOnly);
pixmap.save(&buffer, "PNG");
buffer.close();
The advantage of this approach is that you only create the drop data when necessary. Especially the temp file used for drops to the filesystem.