2012-02-07 4 views
1

мы работаем над приложением C++ Qt, которое копирует выделенный текст и/или изображения из внешних приложений, изменяет его и затем вставляет обратно. Поскольку мы находимся на Mac, мы делаем эту часть с Objective-C.скопируйте и вставьте текст + изображение из NSPasteboard

У нас возникли проблемы с попыткой получить изображение из картона. Он отлично работает для текста, но мы не уверены в том, как обращаться с изображениями или комбинацией текста и изображения. Так как мы не знаем, что пользователь может выбрать, мы должны иметь возможность выполнить общий поиск содержимого картона, чтобы изменить его и поместить обратно в картон.

Мы попробуем это:

//we thought about retrieving some generic item from pasteboard, using NSPasteboardItem 
NSArray *classes = [[NSArray alloc] initWithObjects:[NSPasteboardItem class], nil]; 
NSDictionary *options = [NSDictionary dictionary]; 
NSArray *auxArray = [[NSPasteboard generalPasteboard] readObjectsForClasses:classes options:options]; 
NSData *archived_data = [auxArray objectAtIndex:0]; 

Наше решение для обработки текста был:

NSString *text = [[NSPasteoard generalPasteboard] stringForType:NSStringPboardType]; 
string text_str = string([text UTF8String]); 

Он не работал, так что, как мы можем получить выбор пользователя из картона? Нам нужно получить необработанные байты или содержимое rtf, чтобы изменить его по мере необходимости, а затем вернуть его в картон и вставить обратно, заменив исходный выбор пользователя.

Спасибо!

+0

«мы работаем над ++ Qt C applciation, который копирует выделенный текст и/или изображения из внешних приложений, изменяет его, а затем вставьте его обратно. Так как мы находимся на Mac, мы делаем эту часть с Objective-C. " пожалуйста, llmd, как вы копируете выделенный текст и/или изображения из внешних приложений в oboe-ctivec. Благодарю. nnagornyi (в) aol.com –

ответ

0

Я думаю, что эта функция поможет вам

- (IBAction)paste:sender 
{ 
    NSPasteboard *pasteboard = [NSPasteboard generalPasteboard]; 
    NSArray *classArray = [NSArray arrayWithObject:[NSImage class]]; 
    NSDictionary *options = [NSDictionary dictionary]; 
    BOOL ok = [pasteboard canReadObjectForClasses:classArray options:options]; 
    if (ok) 
    { 
     NSArray *objectsToPaste = [pasteboard readObjectsForClasses:classArray options:options]; 
     NSImage *image = [objectsToPaste objectAtIndex:0]; 
     [imageView setImage:image]; 
    } 
}