QClipboard Class
Die Klasse „QClipboard“ ermöglicht den Zugriff auf die Zwischenablage des Fenstersystems. Mehr...
| Header: | #include <QClipboard> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| Erbt von: | QObject |
Öffentliche Typen
| enum | Mode { Clipboard, Selection, FindBuffer } |
Öffentliche Funktionen
| 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 |
Signale
| void | changed(QClipboard::Mode mode) |
| void | dataChanged() |
| void | findBufferChanged() |
| void | selectionChanged() |
Ausführliche Beschreibung
Die Zwischenablage bietet einen einfachen Mechanismus zum Kopieren und Einfügen von Daten zwischen Anwendungen.
QClipboard unterstützt dieselben Datentypen wie „ QDrag “ und nutzt ähnliche Mechanismen. Informationen zur erweiterten Nutzung der Zwischenablage finden Sie unter „Drag & Drop“.
In einer Anwendung gibt es ein einziges QClipboard-Objekt, auf das über ` QGuiApplication::clipboard()` zugegriffen werden kann.
Beispiel:
QClipboard *clipboard = QGuiApplication::clipboard();
QString originalText = clipboard->text();
// etc.
clipboard->setText(newText);QClipboard bietet einige Komfortfunktionen für den Zugriff auf gängige Datentypen: „ setText()“ ermöglicht den Austausch von Unicode-Text, während „ setPixmap()“ und „ setImage()“ den Austausch von QPixmaps und QImages zwischen Anwendungen ermöglichen. Die Funktion „ setMimeData()“ bietet ein Höchstmaß an Flexibilität: Sie ermöglicht es Ihnen, beliebige „ QMimeData “ in die Zwischenablage einzufügen. Für jede dieser Funktionen gibt es entsprechende Getter, z. B. ` text()` (), ` image()` () und ` pixmap()` (). Sie können die Zwischenablage leeren, indem Sie ` clear()` () aufrufen.
Es folgt ein typisches Beispiel für die Verwendung dieser Funktionen:
void DropArea::paste()
{
const QClipboard *clipboard = QGuiApplication::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"));
}
}Hinweise für X11-Benutzer
- Das X11-Fenstersystem kennt das Konzept einer separaten Auswahl und einer Zwischenablage. Wenn Text ausgewählt wird, steht er sofort als globale Mausauswahl zur Verfügung. Die globale Mausauswahl kann später in die Zwischenablage kopiert werden. Gemäß der Konvention wird die mittlere Maustaste zum Einfügen der globalen Mausauswahl verwendet.
- X11 kennt zudem das Konzept der Eigentümerschaft; wenn Sie die Auswahl innerhalb eines Fensters ändern, benachrichtigt X11 nur den Eigentümer und den vorherigen Eigentümer über die Änderung, d. h., es benachrichtigt nicht alle Anwendungen darüber, dass sich die Auswahl oder die Daten in der Zwischenablage geändert haben.
- Schließlich ist die X11-Zwischenablage ereignisgesteuert, d. h., die Zwischenablage funktioniert nicht ordnungsgemäß, wenn die Ereignisschleife nicht läuft. Ebenso wird empfohlen, den Inhalt der Zwischenablage als direkte Reaktion auf Benutzereingaben zu speichern oder abzurufen, z. B. beim Drücken und Loslassen von Maustasten oder Tasten. Sie sollten den Inhalt der Zwischenablage nicht als Reaktion auf Timer-Ereignisse oder Ereignisse, die nicht auf Benutzereingaben beruhen, speichern oder abrufen.
- Da es unter X11 keine standardisierte Methode zum Kopieren und Einfügen von Dateien zwischen Anwendungen gibt, werden derzeit verschiedene MIME-Typen und Konventionen verwendet. Beispielsweise erwartet Nautilus, dass Dateien mit dem MIME-Typ „
x-special/gnome-copied-files“ bereitgestellt werden, wobei die Daten mit der Ausschneide-/Kopieraktion, einem Zeilenumbruchzeichen und der URL der Datei beginnen.
Hinweise für macOS-Benutzer
macOS unterstützt einen separaten Suchpuffer, der den aktuellen Suchbegriff bei Suchvorgängen enthält. Auf diesen Such-Zwischenablagepuffer kann durch Angabe des Modus „ FindBuffer “ zugegriffen werden.
Hinweise für Windows- und macOS-Benutzer
- Windows und macOS unterstützen keine globale Mausauswahl; sie unterstützen lediglich die globale Zwischenablage, d. h., sie fügen Text nur dann in die Zwischenablage ein, wenn explizit „Kopieren“ oder „Ausschneiden“ ausgeführt wird.
- Windows und macOS kennen kein Eigentumsrecht; die Zwischenablage ist eine vollständig globale Ressource, sodass alle Anwendungen über Änderungen informiert werden.
Hinweise für Android-Nutzer
Unter Android werden nur folgende MIME-Typen unterstützt: text/plain, text/html und text/uri-list.
Siehe auch QGuiApplication.
Dokumentation zu Mitgliedstypen
enum QClipboard::Mode
Dieser Enum-Typ dient dazu, zu steuern, welcher Teil der System-Zwischenablage von den Funktionen ` QClipboard::mimeData()` und ` QClipboard::setMimeData()` sowie verwandten Funktionen verwendet wird.
| Konstante | Wert | Beschreibung |
|---|---|---|
QClipboard::Clipboard | 0 | Gibt an, dass Daten in der globalen Zwischenablage gespeichert und von dort abgerufen werden sollen. |
QClipboard::Selection | 1 | Gibt an, dass Daten in der globalen Mausauswahl gespeichert und von dort abgerufen werden sollen. Die Unterstützung für ` Selection ` ist nur auf Systemen mit einer globalen Mausauswahl (z. B. X11) verfügbar. |
QClipboard::FindBuffer | 2 | Gibt an, dass Daten im Suchpuffer gespeichert und abgerufen werden sollen. Dieser Modus wird unter macOS zum Speichern von Suchbegriffen verwendet. |
Siehe auch ` QClipboard::supportsSelection()`
Dokumentation zu den Member-Funktionen
[signal] void QClipboard::changed(QClipboard::Mode mode)
Dieses Signal wird ausgelöst, wenn sich die Daten für die angegebene Zwischenablage- mode ändern.
Siehe auch „ dataChanged()“, „ selectionChanged()“ und „ findBufferChanged()“.
void QClipboard::clear(QClipboard::Mode mode = Clipboard)
Den Inhalt der Zwischenablage löschen.
Das Argument „ mode “ dient zur Steuerung, welcher Teil der System-Zwischenablage verwendet wird. Wenn „ mode “ auf „ QClipboard::Clipboard “ gesetzt ist, löscht diese Funktion den Inhalt der globalen Zwischenablage. Wenn „ mode “ auf „ QClipboard::Selection “ gesetzt ist, löscht diese Funktion den Inhalt der globalen Mausauswahl. Wenn „ mode “ auf „ QClipboard::FindBuffer “ gesetzt ist, löscht diese Funktion den Suchzeichenfolgenpuffer.
Siehe auch „ QClipboard::Mode “ und „ supportsSelection()“.
[signal] void QClipboard::dataChanged()
Dieses Signal wird ausgelöst, wenn sich die Daten in der Zwischenablage ändern.
Unter macOS und mit Qt-Version 4.3 oder höher werden Änderungen in der Zwischenablage, die von anderen Anwendungen vorgenommen werden, nur erkannt, wenn die Anwendung aktiv ist.
Siehe auch findBufferChanged(), selectionChanged() und changed().
[signal] void QClipboard::findBufferChanged()
Dieses Signal wird ausgelöst, wenn sich der Suchpuffer ändert. Dies gilt nur für macOS.
Ab Qt-Version 4.3 werden Änderungen an der Zwischenablage durch andere Anwendungen nur dann erkannt, wenn die Anwendung aktiv ist.
Siehe auch dataChanged(), selectionChanged() und changed().
QImage QClipboard::image(QClipboard::Mode mode = Clipboard) const
Gibt das Bild aus der Zwischenablage zurück oder ein Nullbild, wenn die Zwischenablage kein Bild enthält oder wenn sie ein Bild in einem nicht unterstützten Bildformat enthält.
Das Argument „ mode “ dient zur Steuerung, welcher Teil der System-Zwischenablage verwendet wird. Wenn „ mode “ auf „ QClipboard::Clipboard “ gesetzt ist, wird das Bild aus der globalen Zwischenablage abgerufen. Wenn „ mode “ auf „ QClipboard::Selection “ gesetzt ist, wird das Bild aus der globalen Mausauswahl abgerufen.
Siehe auch „ setImage()“, „ pixmap()“, „ mimeData()“ und „ QImage::isNull()“.
const QMimeData *QClipboard::mimeData(QClipboard::Mode mode = Clipboard) const
Gibt einen Zeiger auf eine „ QMimeData “-Darstellung der aktuellen Zwischenspeicherdaten zurück (kann „ nullptr “ sein, wenn das angegebene „ mode “ von der Plattform nicht unterstützt wird).
Das Argument ` mode ` dient zur Steuerung, welcher Teil der System-Zwischenablage verwendet wird. Wenn ` mode ` auf ` QClipboard::Clipboard` gesetzt ist, werden die Daten aus der globalen Zwischenablage abgerufen. Wenn ` mode ` auf ` QClipboard::Selection` gesetzt ist, werden die Daten aus der globalen Mausauswahl abgerufen. Wenn ` mode ` auf ` QClipboard::FindBuffer` gesetzt ist, werden die Daten aus dem Suchzeichenfolgenpuffer abgerufen.
Die Funktionen ` text()`, ` image()` und ` pixmap()` sind einfachere Wrapper zum Abrufen von Text-, Bild- und Pixmap-Daten.
Hinweis: Der zurückgegebene Zeiger kann ungültig werden, wenn sich der Inhalt der Zwischenablage ändert – entweder durch Aufruf einer der Setter-Funktionen oder extern durch eine Änderung der System-Zwischenablage.
Siehe auch ` setMimeData()`.
bool QClipboard::ownsClipboard() const
Gibt „ true “ zurück, wenn dieses Zwischenablageobjekt Eigentümer der Zwischenlagendaten ist; andernfalls wird „ false “ zurückgegeben.
bool QClipboard::ownsFindBuffer() const
Gibt „ true “ zurück, wenn dieses Clipboard-Objekt Eigentümer der Daten im Suchpuffer ist; andernfalls wird „ false “ zurückgegeben.
bool QClipboard::ownsSelection() const
Gibt „ true “ zurück, wenn dieses Clipboard-Objekt die Mausauswahldaten enthält; andernfalls wird „ false “ zurückgegeben.
QPixmap QClipboard::pixmap(QClipboard::Mode mode = Clipboard) const
Gibt die Pixmap aus der Zwischenablage zurück oder null, wenn die Zwischenablage keine Pixmap enthält. Beachten Sie, dass dabei Informationen verloren gehen können. Wenn das Bild beispielsweise 24-Bit-Tiefe hat und die Anzeige 8-Bit-Tiefe, wird das Ergebnis auf 8 Bit konvertiert; und wenn das Bild einen Alphakanal enthält, enthält das Ergebnis lediglich eine Maske.
Das Argument „ mode “ dient zur Steuerung, welcher Teil der System-Zwischenablage verwendet wird. Wenn „ mode “ auf „ QClipboard::Clipboard “ gesetzt ist, wird die Pixmap aus der globalen Zwischenablage abgerufen. Wenn „ mode “ auf „ QClipboard::Selection “ gesetzt ist, wird die Pixmap aus der globalen Mausauswahl abgerufen.
Siehe auch setPixmap(), image(), mimeData() und QPixmap::convertFromImage().
[signal] void QClipboard::selectionChanged()
Dieses Signal wird ausgelöst, wenn sich die Auswahl ändert. Dies gilt nur für Fenstersysteme, die Auswahlen unterstützen, z. B. X11. Windows und macOS unterstützen keine Auswahlen.
Siehe auch dataChanged(), findBufferChanged() und changed().
void QClipboard::setImage(const QImage &image, QClipboard::Mode mode = Clipboard)
Kopiert den „ image “ in die Zwischenablage.
Das Argument „ mode “ dient zur Steuerung, welcher Teil der System-Zwischenablage verwendet wird. Wenn „ mode “ auf „ QClipboard::Clipboard “ gesetzt ist, wird das Bild in der globalen Zwischenablage gespeichert. Wenn „ mode “ auf „ QClipboard::Selection “ gesetzt ist, werden die Daten in der globalen Mausauswahl gespeichert.
Dies ist eine Kurzform für:
Siehe auch image(), setPixmap() und setMimeData().
void QClipboard::setMimeData(QMimeData *src, QClipboard::Mode mode = Clipboard)
Setzt die Daten in der Zwischenablage auf src. Die Eigentumsrechte an den Daten werden an die Zwischenablage übertragen. Wenn Sie die Daten entfernen möchten, rufen Sie entweder clear() auf oder rufen Sie setMimeData() erneut mit neuen Daten auf.
Das Argument ` mode ` dient zur Steuerung, welcher Teil der System-Zwischenablage verwendet wird. Wenn ` mode ` den Wert ` QClipboard::Clipboard` hat, werden die Daten in der globalen Zwischenablage gespeichert. Wenn ` mode ` den Wert ` QClipboard::Selection` hat, werden die Daten in der globalen Mausauswahl gespeichert. Wenn ` mode ` den Wert ` QClipboard::FindBuffer` hat, werden die Daten im Suchzeichenfolgenpuffer gespeichert.
Die Funktionen ` setText()`, ` setImage()` und ` setPixmap()` sind einfachere Wrapper zum Festlegen von Text-, Bild- bzw. Pixmap-Daten.
Siehe auch mimeData().
void QClipboard::setPixmap(const QPixmap &pixmap, QClipboard::Mode mode = Clipboard)
Kopiert „ pixmap “ in die Zwischenablage. Beachten Sie, dass dies langsamer ist als „ setImage()“, da „ QPixmap “ zunächst in „ QImage “ konvertiert werden muss.
Das Argument ` mode ` dient zur Steuerung, welcher Teil der System-Zwischenablage verwendet wird. Wenn ` mode ` gleich ` QClipboard::Clipboard` ist, wird die Pixmap in der globalen Zwischenablage gespeichert. Wenn ` mode ` gleich ` QClipboard::Selection` ist, wird die Pixmap in der globalen Mausauswahl gespeichert.
Siehe auch pixmap(), setImage() und setMimeData().
void QClipboard::setText(const QString &text, QClipboard::Mode mode = Clipboard)
Kopiert „ text “ als einfachen Text in die Zwischenablage.
Das Argument ` mode ` dient zur Steuerung, welcher Teil der System-Zwischenablage verwendet wird. Wenn ` mode ` auf ` QClipboard::Clipboard` gesetzt ist, wird der Text in der globalen Zwischenablage gespeichert. Wenn ` mode ` auf ` QClipboard::Selection` gesetzt ist, wird der Text in der globalen Mausauswahl gespeichert. Wenn ` mode ` auf ` QClipboard::FindBuffer` gesetzt ist, wird der Text im Suchzeichenfolgenpuffer gespeichert.
Siehe auch text() und setMimeData().
bool QClipboard::supportsFindBuffer() const
Gibt „ true “ zurück, wenn die Zwischenablage einen separaten Suchpuffer unterstützt; andernfalls gibt sie „ false “ zurück.
bool QClipboard::supportsSelection() const
Gibt „ true “ zurück, wenn die Zwischenablage die Mausauswahl unterstützt; andernfalls wird „ false “ zurückgegeben.
QString QClipboard::text(QClipboard::Mode mode = Clipboard) const
Gibt den Text aus der Zwischenablage als einfachen Text zurück oder eine leere Zeichenkette, wenn die Zwischenablage keinen Text enthält.
Das Argument „ mode “ dient zur Steuerung, welcher Teil der System-Zwischenablage verwendet wird. Wenn „ mode “ auf „ QClipboard::Clipboard “ gesetzt ist, wird der Text aus der globalen Zwischenablage abgerufen. Wenn „ mode “ auf „ QClipboard::Selection “ gesetzt ist, wird der Text aus der globalen Mausauswahl abgerufen. Wenn „ mode “ auf „ QClipboard::FindBuffer “ gesetzt ist, wird der Text aus dem Suchzeichenfolgenpuffer abgerufen.
Siehe auch setText() und mimeData().
QString QClipboard::text(QString &subtype, QClipboard::Mode mode = Clipboard) const
Gibt den Text aus der Zwischenablage im Subtyp „ subtype “ zurück oder eine leere Zeichenfolge, wenn die Zwischenablage keinen Text enthält. Ist „ subtype “ null, ist jeder Subtyp zulässig, und „ subtype “ wird auf den ausgewählten Subtyp gesetzt.
Das Argument „ mode “ dient zur Steuerung, welcher Teil der System-Zwischenablage verwendet wird. Ist „ mode “ auf „ QClipboard::Clipboard “ gesetzt, wird der Text aus der globalen Zwischenablage abgerufen. Ist „ mode “ auf „ QClipboard::Selection “ gesetzt, wird der Text aus der globalen Mausauswahl abgerufen.
Gängige Werte für ` subtype ` sind „plain“ und „html“.
Beachten Sie, dass der wiederholte Aufruf dieser Funktion, beispielsweise aus einem Tastenereignis-Handler heraus, langsam sein kann. In solchen Fällen sollten Sie stattdessen das Signal „ dataChanged() “ verwenden.
Dies ist eine überladene Funktion.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.