Spec-Zone.ru › Qt 5.6

Класс QClipboard

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

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

Открытые типы

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

Открытые функции

void clear(Mode mode = Clipboard)
QImage image(Mode mode = Clipboard) const
const QMimeData * mimeData(Mode mode = Clipboard) const
bool ownsClipboard() const
bool ownsFindBuffer() const
bool ownsSelection() const
QPixmap pixmap(Mode mode = Clipboard) const
void setImage(const QImage &image, Mode mode = Clipboard)
void setMimeData(QMimeData *src, Mode mode = Clipboard)
void setPixmap(const QPixmap &pixmap, Mode mode = Clipboard)
void setText(const QString &text, Mode mode = Clipboard)
bool supportsFindBuffer() const
bool supportsSelection() const
QString text(Mode mode = Clipboard) const
QString text(QString &subtype, Mode mode = Clipboard) const
  • 31 открытых функций унаследованных от QObject

Сигналы

void changed(QClipboard::Mode mode)
void dataChanged()
void findBufferChanged()
void selectionChanged()
  • 2 сигнала унаследованных от QObject

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

  • 1 свойство унаследованное от QObject
  • 1 открытый слот унаследованный от QObject
  • 11 статические открытые члены унаследованные от QObject
  • 9 защищенные функции унаследованные от QObject

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

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

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

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

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

Пример:

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

Класс QClipboard содержит некоторые удобные функции для доступа к распространенным типам данных: setText() позволяет обмениваться текстом Unicode, а setPixmap() и setImage() позволяют обмениваться QPixmap и QImage между приложениями. Функция 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 не имеют понятия владения; буфер обмена — это полностью глобальный ресурс, поэтому все приложения уведомляются об изменениях.

См. также 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(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(Mode mode = Clipboard) const

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

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

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

const QMimeData *QClipboard::mimeData(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(Mode mode = Clipboard) const

Возвращает растровую картинку из буфера обмена, или пустую, если буфер обмена не содержит растровую картинку. Обратите внимание, что это может привести к потере информации. Например, если изображение 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, 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, 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, Mode mode = Clipboard)

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

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

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

void QClipboard::setText(const QString &text, 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.

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

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

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

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

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

Это перегруженная функция.

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

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

Общими значениями для subtype являются "plain" и "html".

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

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

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

Spec-Zone.ru

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