Qt6 — linux — вырежьте файл и вставьте его в файловый менеджер.Linux

Ответить
Anonymous
 Qt6 — linux — вырежьте файл и вставьте его в файловый менеджер.

Сообщение Anonymous »

Я хочу поместить файл в буфер обмена ОС. Я использую Qt6. Код Windows работает, код Unix не работает. Файл копируется, а исходный файл остается.
auto clipboard = QApplication::clipboard();
auto mimeData = new QMimeData();
auto urls = QList();

urls.append(QUrl::fromLocalFile(selectedFilePath));
mimeData->setUrls(urls);
#if defined(Q_OS_MAC) || defined(Q_OS_UNIX) || defined(Q_OS_LINUX)
mimeData->setData("application/x-cut-operation", QByteArray("true"));
#elif defined(Q_OS_WIN)
// 2 for cut and 5 for copy
int dropEffect = 2;
QByteArray dataForClipboard;
QDataStream stream(&dataForClipboard, QIODevice::WriteOnly);
stream.setByteOrder(QDataStream::LittleEndian);
stream setData("Preferred DropEffect", dataForClipboard);
// Should catch: Q_OS_FREEBSD, Q_OS_NETBSD, Q_OS_OPENBSD, and Q_OS_LINUX
#else
qWarning() setMimeData(mimeData);

См. также обмен вырезанием и вставкой из буфера обмена между приложением Qt и проводником Windows.
РЕДАКТИРОВАТЬ:
Следующее код разрешает копирование на Plasma6. Все еще без сокращений.
// https://stackoverflow.com/questions/326 ... d-in-gnome
QByteArray gnomeFormat =
QByteArray("cut\n").append(QUrl::fromLocalFile(selectedFilePath).toEncoded());
mimeData->setData("x-special/gnome-copied-files", gnomeFormat);


Подробнее здесь: https://stackoverflow.com/questions/792 ... le-manager
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»