Я хочу поместить файл в буфер обмена ОС. Я использую 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
Qt6 — linux — вырежьте файл и вставьте его в файловый менеджер. ⇐ Linux
-
Anonymous
1732354329
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/32612779/how-to-copy-local-file-to-qclipboard-in-gnome
QByteArray gnomeFormat =
QByteArray("cut\n").append(QUrl::fromLocalFile(selectedFilePath).toEncoded());
mimeData->setData("x-special/gnome-copied-files", gnomeFormat);
Подробнее здесь: [url]https://stackoverflow.com/questions/79211328/qt6-linux-cut-a-file-to-be-pasted-in-a-file-manager[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия