Работа с буфером обмена

   
На этом шаге рассмотрим работу с буфером обмена.

   
Буфер обмена (Clipboard) обеспечивает возможность обмена данными между разными приложениями. Это один из самых популярных способов копирования данных из одного приложения в другое. Он представляет собой область памяти, к которой могут иметь доступ все запущенные в системе приложения. Любое из них может записывать или считывать информацию из буфера обмена.

   
Программы, работающие с буфером обмена, должны предоставлять стандартные команды: вырезать (cut), скопировать (сopy) и вставить (paste), и эти команды необходимо снабдить определенными комбинациями "горячих" клавиш, ускоряющих работу пользователя: Ctrl+X, Ctrl+C и Ctrl+V соответственно.

   
Для работы с буфером обмена в Qt используется класс QClipboard. Объект этого класса создается при запуске приложения автоматически и может существовать в приложении только в единственном числе.

   
Данные можно помещать в буфер обмена при помощи методов setText(), setPixmap(), setImage() или setMimeData(). Например:

QClipboard* pcb = QApplication::clipboard();
pcb->setText(lineEdit->text(), QClipboard::Clipboard);

   
Объект класса QClipboard отправляет сигнал dataChanged() каждый раз, когда одно из приложений помещает в буфер обмена новые данные. Если необходимо контролировать данные, размещенные в буфере обмена, то этот сигнал соединяют с соответствующим слотом. Например:

connect(pcb,SIGNAL(dataChanged()),this,SLOT(paste()));

   
При помощи метода setMimeData() можно помещать в буфер обмена данные любого типа. Метод принимает указатель на объект класса, унаследованного от класса QMimeSource. QMimeSource — это абстрактный класс, являющийся основой для типов данных, которые могут быть преобразованы в другие форматы.

   
С помощью методов text(), image(), pixmap() и mimeData() данные получают из буфера обмена. Например:

QString str = pcb->text();
if (!str.isNull()) {
   label->setText(str);
}

   
В примере, приведенном на рисунке 1, реализована работа с буфером обмена, рассмотренная выше.


Рис.1. Пример использования буфера обмена

   
Файлы приложения можно взять Предыдущий шаг
Содержание
Следующий шаг



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий