Spec-Zone.ru › Qt 5.12

Класс QClipboard

Класс QClipboard предоставляет доступ к буферу обмена системы окон. Подробнее...

Заголовок: #include <QClipboard>
qmake: QT += gui
Наследует: QObject
  • Список всех членов, включая наследуемые
  • Устаревшие члены

Типы публичного интерфейса

перечисление Mode { Clipboard, Selection, FindBuffer }

Публичные функции

void clear(QClipboard::Mode mode = Clipboard)
QImage image(QClipboard::Mode mode = Clipboard) const
const QMimeData * mimeData(QClipboard::Mode mode = Clipboard) const
bool ownsClipboard() const
bool ownsFindBuffer() const
bool ownsSelection() const
QPixmap pixmap(QClipboard::Mode mode = Clipboard) const
void setImage(const QImage &image, QClipboard::Mode mode = Clipboard)
void setMimeData(QMimeData *src, QClipboard::Mode mode = Clipboard)
void setPixmap(const QPixmap &pixmap, QClipboard::Mode mode = Clipboard)
void setText(const QString &text, QClipboard::Mode mode = Clipboard)
bool supportsFindBuffer() const
bool supportsSelection() const
QString text(QClipboard::Mode mode = Clipboard) const
QString text(QString &subtype, QClipboard::Mode mode = Clipboard) const
  • 31 public function inherited from QObject

Сигналы

void changed(QClipboard::Mode mode)
void dataChanged()
void findBufferChanged()
void selectionChanged()
  • 2 signals inherited from QObject

Статические публичные члены

const QMetaObject staticMetaObject
  • 9 static public members inherited from QObject

Дополнительные наследуемые члены

  • 1 property inherited from QObject
  • 1 public slot inherited from QObject
  • 9 protected functions inherited from QObject

Подробное описание

Класс QClipboard предоставляет доступ к буферу обмена системы окон.

Буфер обмена предоставляет простой механизм для копирования и вставки данных между приложениями.

QClipboard поддерживает те же типы данных, что и QDrag, и использует аналогичные механизмы. Для расширенного использования буфера обмена прочтите раздел Перетаскивание и Сброс.

В приложении существует единственный объект QClipboard, доступный как QGuiApplication::clipboard().

Пример:

QClipboard *clipboard = QGuiApplication::clipboard();
QString originalText = clipboard->text();
...
clipboard->setText(newText);

Класс QClipboard содержит некоторые удобные функции для доступа к общим типам данных: setText() позволяет обмениваться текстом Unicode, а setPixmap() и setImage() позволяют обмениваться объектами QPixmaps и QImages между приложениями. Функция setMimeData() обладает максимальной гибкостью: она позволяет добавить любой QMimeData в буфер обмена. Существуют соответствующие методы-геттеры для каждого из них, например, text(), image() и pixmap(). Вы можете очистить буфер обмена, вызвав clear().

Типичный пример использования этих функций приведен ниже:

void DropArea::paste()
{
    const QClipboard *clipboard = QApplication::clipboard();
    const QMimeData *mimeData = clipboard->mimeData();

    if (mimeData->hasImage()) {
        setPixmap(qvariant_cast<QPixmap>(mimeData->imageData()));
    } else if (mimeData->hasHtml()) {
        setText(mimeData->html());
        setTextFormat(Qt::RichText);
    } else if (mimeData->hasText()) {
        setText(mimeData->text());
        setTextFormat(Qt::PlainText);
    } else {
        setText(tr("Cannot display data"));
    }

Примечания для пользователей X11

  • Система окон X11 имеет понятие отдельного буфера обмена и выделенного текста. При выделении текста он немедленно становится доступным как глобальное выделение мыши. Глобальное выделение мыши позже может быть скопировано в буфер обмена. По соглашению, для вставки глобального выделения мыши используется средняя кнопка мыши.
  • X11 также имеет понятие владения; если вы измените выделение в окне, X11 уведомит только владельца и предыдущего владельца об изменении, то есть не уведомит все приложения о том, что выделение или данные буфера обмена изменились.
  • Наконец, буфер обмена X11 управляется событиями, то есть буфер обмена не будет работать должным образом, если цикл событий не запущен. Аналогично, рекомендуется, чтобы содержимое буфера обмена хранилось или извлекалось в ответ на события пользовательского ввода, например, нажатия и отпускания кнопок мыши или клавиш. Вы не должны хранить или извлекать содержимое буфера обмена в ответ на таймеры или события, не связанные с пользователем.
  • Поскольку нет стандартного способа копирования и вставки файлов между приложениями в X11, в настоящее время используются различные типы MIME и соглашения. Например, Nautilus ожидает, что файлы будут предоставлены с типом MIME x-special/gnome-copied-files с данными, начинающимися с действия вырезания/копирования, символа новой строки и URL-адреса файла.

Примечания для пользователей macOS

macOS поддерживает отдельный буфер поиска, который содержит текущую строку поиска в операциях поиска. К этому буферу поиска можно получить доступ, указав режим FindBuffer.

Примечания для пользователей Windows и macOS

  • Windows и macOS не поддерживают глобальное выделение мышью; они поддерживают только глобальный буфер обмена, т. е. они добавляют текст в буфер обмена только при явном копировании или вырезании.
  • Windows и macOS не имеют понятия владения; буфер обмена — полностью глобальный ресурс, поэтому все приложения уведомляются об изменениях.

Примечания для пользователей Universal Windows Platform

  • Universal Windows Platform позволяет запрашивать буфер обмена только в том случае, если приложение активно и окно приложения имеет фокус. Доступ к данным буфера обмена при работе в фоновом режиме завершится с ошибкой из-за отказа в доступе.

См. также QGuiApplication.

Документация по типам членов

перечисление QClipboard::Mode

Это перечисление используется для управления той частью буфера обмена системы, которая используется функциями QClipboard::mimeData(), QClipboard::setMimeData() и связанными с ними функциями.

Постоянная Значение Описание
QClipboard::Clipboard 0 указывает, что данные должны храниться и извлекаться из глобального буфера обмена.
QClipboard::Selection 1 указывает, что данные должны храниться и извлекаться из глобального выделения мышью. Поддержка Selection предоставляется только на системах с глобальным выделением мышью (например, X11).
QClipboard::FindBuffer 2 указывает, что данные должны храниться и извлекаться из буфера поиска. Этот режим используется для хранения строк поиска на macOS.

См. также QClipboard::supportsSelection().

Документация по документации функций

[signal] void QClipboard::changed(QClipboard::Mode mode)

Этот сигнал излучается, когда данные для данного режима буфера обмена mode изменяются.

Функция была введена в Qt 4.2.

См. также dataChanged(), selectionChanged(), и findBufferChanged().

void QClipboard::clear(QClipboard::Mode mode = Clipboard)

Очистить содержимое буфера обмена.

Аргумент mode используется для управления частью системного буфера обмена, которая используется. Если mode равен QClipboard::Clipboard, эта функция очищает глобальное содержимое буфера обмена. Если mode равен QClipboard::Selection, эта функция очищает содержимое глобальной выделенной области. Если mode равен QClipboard::FindBuffer, эта функция очищает буфер строки поиска.

См. также QClipboard::Mode и supportsSelection().

[signal] void QClipboard::dataChanged()

Этот сигнал испускается при изменении данных буфера обмена.

В macOS и с Qt версии 4.3 или выше изменения буфера обмена, внесенные другими приложениями, будут обнаружены только при активации приложения.

См. также findBufferChanged(), selectionChanged(), и changed().

[signal] void QClipboard::findBufferChanged()

Этот сигнал испускается при изменении буфера поиска. Это относится только к macOS.

С Qt версии 4.3 или выше изменения буфера обмена, внесенные другими приложениями, будут обнаружены только при активации приложения.

Эта функция была введена в Qt 4.2.

См. также dataChanged(), selectionChanged(), и changed().

QImage QClipboard::image(QClipboard::Mode mode = Clipboard) const

Возвращает изображение буфера обмена или возвращает пустое изображение, если буфер обмена не содержит изображение или содержит изображение в недопустимом формате.

Аргумент mode используется для управления частью системного буфера обмена, которая используется. Если mode равен QClipboard::Clipboard, изображение извлекается из глобального буфера обмена. Если mode равен QClipboard::Selection, изображение извлекается из глобальной выделенной области.

См. также setImage(), pixmap(), mimeData(), и QImage::isNull().

const QMimeData *QClipboard::mimeData(QClipboard::Mode mode = Clipboard) const

Возвращает указатель на QMimeData представление текущих данных буфера обмена (может быть NULL, если заданный mode не поддерживается платформой).

Аргумент mode используется для управления частью системного буфера обмена, которая используется. Если mode равен QClipboard::Clipboard, данные извлекаются из глобального буфера обмена. Если mode равен QClipboard::Selection, данные извлекаются из глобальной выделенной области. Если mode равен QClipboard::FindBuffer, данные извлекаются из буфера строки поиска.

Функции text(), image() и pixmap() являются более простыми обёртками для извлечения данных текста, изображения и пикселмапа, соответственно.

Примечание: Возвращённый указатель может стать недействительным, когда содержимое буфера обмена изменяется; либо путём вызова одной из функций-установщиков, либо внешним изменением системного буфера обмена.

См. также setMimeData().

bool QClipboard::ownsClipboard() const

Возвращает true если этот объект буфера обмена владеет данными буфера обмена; иначе возвращает false.

bool QClipboard::ownsFindBuffer() const

Возвращает true если этот объект буфера обмена владеет данными буфера поиска; иначе возвращает false.

Эта функция была введена в Qt 4.2.

bool QClipboard::ownsSelection() const

Возвращает true если этот объект буфера обмена владеет данными выделения; иначе возвращает false.

QPixmap QClipboard::pixmap(QClipboard::Mode mode = Clipboard) const

Возвращает пикселмап буфера обмена или null, если буфер обмена не содержит пикселмапа. Обратите внимание, что это может привести к потере информации. Например, если изображение имеет 24 бита, а дисплей имеет 8 бит, результат преобразуется в 8 бит, а если изображение имеет альфа-канал, результат будет иметь только маску.

Аргумент mode используется для управления частью системного буфера обмена, которая используется. Если mode равен QClipboard::Clipboard, пикселмап извлекается из глобального буфера обмена. Если mode равен QClipboard::Selection, пикселмап извлекается из глобальной выделенной области.

См. также setPixmap(), image(), mimeData(), и QPixmap::convertFromImage().

[signal] void QClipboard::selectionChanged()

Этот сигнал испускается при изменении выделения. Это относится только к системам окон, которые поддерживают выделения, например, X11. Windows и macOS не поддерживают выделения.

См. также dataChanged(), findBufferChanged(), и changed().

void QClipboard::setImage(const QImage &image, QClipboard::Mode mode = Clipboard)

Копирует image в буфер обмена.

Аргумент mode используется для управления частью системного буфера обмена, которая используется. Если mode равен QClipboard::Clipboard, изображение сохраняется в глобальном буфере обмена. Если mode равен QClipboard::Selection, данные сохраняются в глобальной выделенной области.

Это сокращение для:

QMimeData *data = new QMimeData;
data->setImageData(image);
clipboard->setMimeData(data, mode);

См. также image(), setPixmap(), и setMimeData().

void QClipboard::setMimeData(QMimeData *src, QClipboard::Mode mode = Clipboard)

Устанавливает данные буфера обмена в src. Владение данными передаётся буферу обмена. Если вы хотите удалить данные, вызовите clear() или вызовите setMimeData() снова с новыми данными.

Аргумент mode используется для управления частью системного буфера обмена, которая используется. Если mode равен QClipboard::Clipboard, данные сохраняются в глобальном буфере обмена. Если mode равен QClipboard::Selection, данные сохраняются в глобальной выделенной области. Если mode равен QClipboard::FindBuffer, данные сохраняются в буфере строки поиска.

Функции setText(), setImage() и setPixmap() являются более простыми обёртками для установки данных текста, изображения и пикселмапа, соответственно.

См. также mimeData().

void QClipboard::setPixmap(const QPixmap &pixmap, QClipboard::Mode mode = Clipboard)

Копирует pixmap в буфер обмена. Обратите внимание, что это медленнее, чем setImage(), так как необходимо преобразовать QPixmap в QImage сначала.

Аргумент mode используется для управления частью системного буфера обмена, которая используется. Если mode равен QClipboard::Clipboard, пикселмап сохраняется в глобальном буфере обмена. Если mode равен QClipboard::Selection, пикселмап сохраняется в глобальной выделенной области.

См. также pixmap(), setImage(), и setMimeData().

void QClipboard::setText(const QString &text, QClipboard::Mode mode = Clipboard)

Копирует text в буфер обмена как обычный текст.

Аргумент mode используется для управления частью системного буфера обмена, которая используется. Если mode равен QClipboard::Clipboard, текст сохраняется в глобальном буфере обмена. Если mode равен QClipboard::Selection, текст сохраняется в глобальной выделенной области. Если mode равен QClipboard::FindBuffer, текст сохраняется в буфере строки поиска.

См. также text() и setMimeData().

bool QClipboard::supportsFindBuffer() const

Возвращает true если буфер обмена поддерживает отдельный буфер поиска; иначе возвращает false.

bool QClipboard::supportsSelection() const

Возвращает true если буфер обмена поддерживает выделение мышью; иначе возвращает false.

END_OF_DOCUMENT_MARKER

QString QClipboard::text(QClipboard::Mode mode = Clipboard) const

Возвращает текст буфера обмена в виде простого текста или пустую строку, если буфер обмена не содержит текста.

Аргумент mode используется для управления тем, какая часть системного буфера обмена используется. Если mode равен QClipboard::Clipboard, текст извлекается из глобального буфера обмена. Если mode равен QClipboard::Selection, текст извлекается из глобального выделения мыши. Если mode равен QClipboard::FindBuffer, текст извлекается из буфера строки поиска.

См. также setText() и mimeData().

QString QClipboard::text(QString &subtype, QClipboard::Mode mode = Clipboard) const

Это перегруженный метод.

Возвращает текст буфера обмена в подтипе subtype или пустую строку, если буфер обмена не содержит текста. Если subtype равно null, любой подтип приемлем, и subtype устанавливается на выбранный подтип.

Общие значения для subtype — "plain" и "html".

Обратите внимание, что вызов этого метода многократно, например, из обработчика событий клавиатуры, может быть медленным. В таких случаях следует использовать dataChanged() сигнал вместо этого.

См. также setText() и mimeData().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qclipboard.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API