当前位置: 首页 > article >正文

qt QClipboard详解

1、概述

QClipboard是Qt框架中的一个类,它提供了对窗口系统剪贴板的访问能力。剪贴板是一个临时存储区域,通常用于在应用程序之间传递文本、图像和其他数据。QClipboard通过统一的接口来操作剪贴板内容,使得开发者能够方便地实现剪切、复制和粘贴功能。它支持处理各种数据格式,包括文本、图像和自定义数据,是Qt中用于与操作系统剪贴板交互的重要工具。

2、重要方法

QClipboard类提供了多个方法来设置和获取剪贴板的内容。以下是一些重要的方法:

  • setText(const QString &text): 将文本设置为剪贴板的内容。
  • text() const: 返回剪贴板中的文本内容。
  • setImage(const QImage &image): 将图像设置为剪贴板的内容。
  • image() const: 返回剪贴板中的图像内容。
  • setPixmap(const QPixmap &pixmap): 将像素映射(QPixmap)设置为剪贴板的内容。注意,这个方法比setImage()慢,因为它需要首先将QPixmap转换为QImage。
  • pixmap() const: 返回剪贴板中的像素映射内容。
  • setData(const QMimeData *data): 使用QMimeData对象设置剪贴板的内容,这是设置剪贴板内容的灵活方式,允许添加任何类型的数据。
  • mimeData() const: 返回代表当前剪贴板数据的QMimeData对象的引用。
  • clear(): 清空剪贴板的内容。
3、重要信号

QClipboard类还提供了两个重要的信号,用于通知剪贴板内容的变化:

  • void selectionChanged(): 当选择发生变化时,这个信号被发射。这仅仅适用于支持选择的窗口系统,例如X11。Windows不支持选择。
  • void dataChanged(): 当剪贴板内容发生变化时,这个信号被发射。
  • void changed(QClipboard::Mode mode):当剪贴板的内容改变时发出信号。

4、常用枚举类型

以下是 QClipboard 类中一些常用的枚举类型及其简要介绍:
QClipboard::Mode剪贴板模式:

  • QClipboard::Clipboard:应用程序剪贴板。
  • QClipboard::Selection:选择模式(通常仅限于X11系统)。
  • QClipboard::FindBuffer:查找缓冲区(仅限于X11系统)。
#include <QApplication>
#include <QClipboard>
#include <QTextEdit>
#include <QPushButton>
#include <QVBoxLayout>
#include <QWidget>
#include <QString>
#include <QDebug>

class ClipboardExample : public QWidget {
    Q_OBJECT

public:
    ClipboardExample(QWidget *parent = nullptr) : QWidget(parent) {
        QVBoxLayout *layout = new QVBoxLayout(this);

        QTextEdit *textEdit = new QTextEdit(this);
        layout->addWidget(textEdit);

        QPushButton *copyButton = new QPushButton("Copy to Clipboard", this);
        layout->addWidget(copyButton);

        QPushButton *pasteButton = new QPushButton("Paste from Clipboard", this);
        layout->addWidget(pasteButton);

        connect(copyButton, &QPushButton::clicked, [this, textEdit]() {
            QClipboard *clipboard = QApplication::clipboard();
            clipboard->setText(textEdit->toPlainText());
            qDebug() << "Text copied to clipboard:" << textEdit->toPlainText();
        });

        connect(pasteButton, &QPushButton::clicked, [this, textEdit]() {
            QClipboard *clipboard = QApplication::clipboard();
            QString text = clipboard->text();
            textEdit->setPlainText(text);
            qDebug() << "Text pasted from clipboard:" << text;
        });
    }
};



int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    ClipboardExample example;
    example.show();

    return app.exec();
}

觉得有帮助的话,打赏一下呗。。

           


http://www.kler.cn/a/385831.html

相关文章:

  • 【CANOE】【学习】【DecodeString】字节转为中文字符输出
  • Python学习笔记(2)正则表达式
  • Spring:bean的配置
  • 速盾:cdn 支持 php 吗?
  • vue内置指令和自定义指令
  • CSS Module:告别类名冲突,拥抱模块化样式(5)
  • # 使用VMwarWorkstation虚拟机安装Ubuntu系统
  • Obsidian之与Typora图片格式相互兼容
  • 【缓存与加速技术实践】Web缓存代理与CDN内容分发网络
  • 图像分割1
  • FTP替代方案:FileLink内外网文件摆渡,助力企业安全高效文件传输
  • 【Hadoop实训】Flume系统负载均衡测试
  • Java项目实战II基于Spring Boot的高校教师电子名片系统的设计与实现(开发文档+数据库+源码)
  • Apache POI 操作Word常用方法
  • 【欧拉公式】从无穷级数角度理解
  • SparkCore中的常见问题
  • C#-异步查询示例
  • 理解 WordPress | 第一篇:与内容管理系统的关系
  • HiveSQL面试题
  • 惊爆:抖音小程序广告掘金计划,游戏+广告双赢新趋势!
  • django-tidb版本说明
  • 软考系统架构设计师论文:论边缘计算及其应用
  • 华为市场ASO详解
  • 什么是聚类分析,它在数据分析中的应用是什么
  • [前端]NodeJS常见面试题目
  • 类与对象—中