Шаг 125.
Библиотека Qt.
Работа с буфером обмена

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

    Буфер обмена (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. Пример использования буфера обмена

    Файлы приложения можно взять здесь.

    На следующем шаге рассмотрим остальные классы событий.




Предыдущий шаг Содержание Следующий шаг