crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Копирование файла в буфер
Tereks
  опции профиля:
сообщение 22.12.2009, 13:35
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 18
Регистрация: 9.12.2009
Пользователь №: 1290

Спасибо сказали: 0 раз(а)




Репутация:   0  


Кто-нибудь сталкивался с проблемой копирования файла в буфер? Не могу добиться нормального копирования (ну как в TotalCommander к примеру)
пробовал через
QFile readFile( "C:\file.txt" );
if ( !readFile.open( QIODevice::ReadOnly ) )
return;

QMimeData * md = new QMimeData();
md->setData( "file", readFile.readAll() );
QApplication::clipboard()->setMimeData( md );


но как-то не очень вышло ) Поделитесь знанием..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
CrackedMind
  опции профиля:
сообщение 22.12.2009, 13:57
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 44
Регистрация: 13.3.2009
Пользователь №: 611

Спасибо сказали: 7 раз(а)




Репутация:   0  


Для начала надо бы
"C:\\file.txt"

Кто за тебя слэши экранировать будет?

Да и зачем полное содержимое файла в буфер пихать? Скопируй имя файла, а потом при вставке вызови QFile::copy....

Сообщение отредактировал CrackedMind - 22.12.2009, 14:06
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 22.12.2009, 16:01
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(CrackedMind @ 22.12.2009, 16:57) *
Да и зачем полное содержимое файла в буфер пихать?
согласен, ведь это может быть тяжёлый файл.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 22.12.2009, 16:16
Сообщение #4


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

Спасибо сказали: 21 раз(а)




Репутация:   6  


Цитата(Tereks @ 22.12.2009, 13:35) *
Кто-нибудь сталкивался с проблемой копирования файла в буфер? Не могу добиться нормального копирования (ну как в TotalCommander к примеру)
пробовал через
QFile readFile( "C:\file.txt" );
if ( !readFile.open( QIODevice::ReadOnly ) )
return;

QMimeData * md = new QMimeData();
md->setData( "file", readFile.readAll() );
QApplication::clipboard()->setMimeData( md );


но как-то не очень вышло ) Поделитесь знанием..

постановка задачи не полностью ясна. Копирование файла в буфер для чего? Вставка в другое место с пом. средство оболочки?
начни искать тут: http://www.rsdn.ru/article/winshell/shlext1.xml
+ при копировании файла в буфер в винде там сидят вот такие миме типы:
Цитата
QClipboard formats: application/x-qt-windows-mime;value="Shell IDList Array" / text/uri-list / application/x-qt-windows-mime;value="Preferred DropEffect" / application/x-qt-windows-mime;value="Shell Object Offsets" / application/x-qt-windows-mime;value="FileName" / application/x-qt-windows-mime;value="FileNameW"


получено:
    QClipboard* clipBrd = qApp->clipboard();
    if (clipBrd){
        const QMimeData* mime = clipBrd->mimeData();
        if (mime){
            toDebug =toDebug + QString("\n QClipboard formats: ") + mime->formats().join(" / ");
        }
    }

возможно эта инфа поможет.

Сообщение отредактировал trdm - 22.12.2009, 16:19
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tereks
  опции профиля:
сообщение 23.12.2009, 7:44
Сообщение #5


Студент
*

Группа: Новичок
Сообщений: 18
Регистрация: 9.12.2009
Пользователь №: 1290

Спасибо сказали: 0 раз(а)




Репутация:   0  


Так, со слешами все понятно, это не суть. Смысл вот в чем - надо просто скопировать файл в буфер, как угодно, имея только QFileInfo. Что будет потом - меня не касается, как основной вариант - вставка файла в проводнике винды или там линуха через обычный Ctrl+V. Главная заморочка - запихать нужную информацию в буфер.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tereks
  опции профиля:
сообщение 23.12.2009, 9:23
Сообщение #6


Студент
*

Группа: Новичок
Сообщений: 18
Регистрация: 9.12.2009
Пользователь №: 1290

Спасибо сказали: 0 раз(а)




Репутация:   0  


Все, проблема решена. Всем спасибо
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 23.12.2009, 11:32
Сообщение #7


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

Спасибо сказали: 21 раз(а)




Репутация:   6  


Цитата(Tereks @ 23.12.2009, 9:23) *
Все, проблема решена. Всем спасибо

ну тады выкладывай решение. мало ли кому еще понадобится.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tereks
  опции профиля:
сообщение 24.12.2009, 9:25
Сообщение #8


Студент
*

Группа: Новичок
Сообщений: 18
Регистрация: 9.12.2009
Пользователь №: 1290

Спасибо сказали: 0 раз(а)




Репутация:   0  


А, действительно. Для тех кому еще понадобится:
QMimeData * md = new QMimeData(); // создаем новый объект QMimeData
QUrl url1;
url1.setPath( "Путь к файлу" ); // Создаем QUrl с ссылкой на искомый файл
if ( url1.isValid() )
{
       QList<QUrl> list;
       list.append( url1 );
       md->setUrls( list ); // Подпихиваем лист ссылок в объект и все в порядке
       QApplication::clipboard()->setMimeData( md );
}


У меня работает на ура.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 5.10.2022, 11:44