crossplatform.ru

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


  Ответ в Копирование файла в буфер
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Tereks Дата 24.12.2009, 9:25
  А, действительно. Для тех кому еще понадобится:
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 );
}


У меня работает на ура.
trdm Дата 23.12.2009, 11:32
 
Цитата(Tereks @ 23.12.2009, 9:23) *
Все, проблема решена. Всем спасибо

ну тады выкладывай решение. мало ли кому еще понадобится.
Tereks Дата 23.12.2009, 9:23
  Все, проблема решена. Всем спасибо
Tereks Дата 23.12.2009, 7:44
  Так, со слешами все понятно, это не суть. Смысл вот в чем - надо просто скопировать файл в буфер, как угодно, имея только QFileInfo. Что будет потом - меня не касается, как основной вариант - вставка файла в проводнике винды или там линуха через обычный Ctrl+V. Главная заморочка - запихать нужную информацию в буфер.
trdm Дата 22.12.2009, 16:16
 
Цитата(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(" / ");
        }
    }

возможно эта инфа поможет.
Litkevich Yuriy Дата 22.12.2009, 16:01
 
Цитата(CrackedMind @ 22.12.2009, 16:57) *
Да и зачем полное содержимое файла в буфер пихать?
согласен, ведь это может быть тяжёлый файл.
CrackedMind Дата 22.12.2009, 13:57
  Для начала надо бы
"C:\\file.txt"

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

Да и зачем полное содержимое файла в буфер пихать? Скопируй имя файла, а потом при вставке вызови QFile::copy....
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 );


но как-то не очень вышло ) Поделитесь знанием..
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 19:01