Посмотрите на QMimeData
и его документацию, у него есть виртуальная функция
virtual QVariant retrieveData ( const QString & mimetype, QVariant::Type type ) const
это означает, что при перетаскивании наружу вы реализуете эти функции соответственно
class DeferredMimeData : public QMimeData
{
DeferredMimeData(QString downloadFilename) : m_filename(downloadFilename)
virtual QVariant retrieveData (const QString & mimetype, QVariant::Type type) const
{
if (mimetype matches expected && type matches expected)
{
perform download with m_filename
}
}
}
Примеры кодирования с задержкой демонстрируют этот принцип.
Вам, вероятно, также придется переопределить hasFormat
и formats
, чтобы обеспечить соответствующие типы, application/octet-stream
, вероятно, тот, который может принести вам наибольшую игру, вам, вероятно, придется прочитать о том, как конкретно Windows обрабатывает перетащите с помощью MIME типов.
Я не знаю, как вы будете указывать имя файла, под которым он будет сохранен, но вам, вероятно, придется столкнуться с проблемой Windows. Просмотр источника QWindowsMime
также может помочь. Там может быть многоэтапный процесс, где вы получите запросы на text/uri-list
данные для имен файлов, а затем application/octet-stream
для данных.
Надеюсь, это поможет