QClipboard类的使用以及说明文档

目录

一、QClipboard的简介

三、QClipboard的信号

四、QClipboard的详细描述

五、QClipboard的成员函数文档

六、QClipboard的使用例子


一、QClipboard的简介

QClipboard类提供了对窗口系统剪贴板的访问。继承了QObject

​#include "qclipboard.h"

二、QClipboard的公有成员

三、QClipboard的信号

四、QClipboard的详细描述

QClipboard类提供了对窗口系统剪贴板的访问。

剪贴板提供了一种在应用程序之间复制和粘贴数据的简单机制。

QClipboard支持和QDragObject一样的数据类型,并且使用类似的机制。有关剪贴板高级的用法请阅读拖放文档

在应用程序中只有一个QClipboard,并且你可以使用QApplication::clipboard()来访问它。

实例:

QClipboard提供了一些有特色的很方便的函数来访问普通数据类型:setText()允许在应用程序之间Unicode文本的交换,setPixmap()和setImage()允许在应用程序之间交换QPixmap和QImage。setData()函数在功能上是最灵活的:它允许你把任何QMimeSource添加到剪贴板。每种方式都有相应的获得函数,例如text()、image()和pixmap()。

你可以通过调用clear()清空剪贴板。

X窗口系统和微软的Windows底层的剪贴板是不同的。X窗口系统有一个选择的概念——当文本被选择,它立即被复制到选择缓冲;微软的Windows仅仅在文本被显示地复制或者剪切的时候才被复制到剪贴板。X窗口系统还有一个所有权的概念,如果你在一个窗口中改变了选择,X11仅仅通知变化的拥有者和前任拥有者,在微软的Windows是剪贴板是一个完完全全的全局资源,所以所有应用程序被通知了变化。请参考Qt设计器实例中的multiclip实例,这是一个也描述了选择处理的多平台剪贴板应用程序。也可以参考环境类输入/输出和网络

五、QClipboard的成员函数文档

void QClipboard::clear ()

清空剪贴板内容。

QMimeSource  *QClipboard::data () const

返回代表当前剪贴板数据的QMimeSource的引用。

void QClipboard::dataChanged ()[信号]

当剪贴板内容发生变化时,这个信号被发射。

​​​​​​​QImage QClipboard::image () const

返回剪贴板图片,或者如果剪贴板没有包含任何图片或者它包含一个不被支持的格式的图片,返回一个无效的图片。也可以参考setImage()、pixmap()、data()和QImage::isNull()。

bool QClipboard::ownsClipboard ()const

如果剪贴板对象拥有剪贴板数据,返回真,否则返回假。

bool QClipboard::ownsSelection ()const

如果剪贴板对象拥有鼠标选择数据,返回真,否则返回假。

QPixmap QClipboard::pixmap () const

返回剪贴板像素映射,或者如果剪贴板不包含像素映射,返回无效的像素映射。注意这样会导致丢失信息。例如,如果图片是24位并且显示是8位,结果会被转换为8位,并且如果这个图象有一个alpha通道,结果会只有一个面具。也可以参考setPixmap()、image()、data()和QPixmap::convertFromImage()。

void QClipboard::selectionChanged ()[信号]

当选择发生变化时,这个信号被发射。这仅仅适用于支持选择的窗口系统,例如X11。Windows不支持选择。

bool QClipboard::selectionModeEnabled ()const

返回选择模式。也可以参考setSelectionMode()和supportsSelection()。

void QClipboard::setData ( QMimeSource * src)

设置剪贴板数据位src。数据的所有权被传递给剪贴板。如果你想移除这个数据,请调用clear()或者使用新数据再次调用setData()。

QDragObject子类是可以放到剪贴板中的合理对象(但是不要试图在同一个对象上调用QDragObject::drag())。任何被放置到剪贴板中的QDragObject的父对象都必须为0。不要把QDragMoveEventQDropEvent的子类放到剪贴板中,因为它们不属于接收到它们的事件处理器。

setText()和setPixmap()函数只是分别地对文本和图象数据的简单封装。

​void QClipboard::setImage (const QImage & image)

image复制到剪贴板。

这是一个快速的方式:

也可以参考image()、setPixmap()和setData()。

void QClipboard::setPixmap (const QPixmap & pixmap)

pixmap复制到剪贴板。注意这个比setImage()慢,因为它需要首先把QPixmap转换为QImage

也可以参考pixmap()、setImage()和setData()。

void QClipboard::setSelectionMode (bool enable )

设置剪贴板选择模式。如果enable为真,那么后来对QClipboard::setData()的调用以及其它把数据放到简帖板的函数都将会把数据放到鼠标选择中,否则数据将会被放到剪贴板中。

也可以参考supportsSelection()和selectionModeEnabled()。

​void QClipboard::setText ( const QString & text)

text作为简单文本复制到剪贴板中。

也可以参考text()和setData()。

bool QClipboard::supportsSelection ()const

如果剪贴板支持鼠标选择,返回真,否则返回假。

​QString QClipboard::text ( QCString & subtype) const

返回子类型为subtype的剪贴板文本,或者如果剪贴板不包含任何文本,返回一个无效字符串。如果subtype为空,任何子类型都是可以接受的,并且subtype被设置为被选择的子类型。

subtype的值应为“plain”和“html”。

也可以参考setText()、data()和QString::operator!()。

QString QClipboard::text () const

这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。

返回纯文本格式的剪贴板文本,或者如果剪贴板不包含任何文本,返回一个无效字符串。

也可以参考setText()、data()和QString::operator!()。

六、QClipboard的使用例子

QClipboard类提供对窗口系统剪贴板的访问。
剪贴板提供了在应用程序之间复制和粘贴数据的简单机制。
通过QClipboard提供的一些函数,可以实现复制文字,复制图片、文件的操作。

以下是对这些操作的接口使用:

复制文本:

通过setText(const QString &text, Mode mode = Clipboard)函数设置:
它表示将文本作为纯文本复制到剪贴板中

mode参数用于控制使用系统剪贴板的哪一部分。默认Clipboard。
如果mode为QClipboard::Clipboard,文本存储在全局剪贴板中。
如果mode为QClipboard::Selection,文本存储在全局鼠标选择中。
如果mode为QClipboard::FindBuffer,文本存储在搜索字符串缓冲区中(macOS上使用)。
通常我们只使用QClipboard::Clipboard。
void Widget::on_pushButton_clicked()
{
    QClipboard *clip = QApplication::clipboard();
    clip->setText("hello world!");
}

复制图片:

setPixmap(const QPixmap &pixmap, Mode mode = Clipboard):表示复制QPixmap到剪贴板。
比setImage()慢,因为它需要首先将QPixmap转换为QImage,这是一个耗时操作。

void MainWindow::on_pushButton_clicked()
{
    //复制图像,可粘贴到画图中
    QImage *image=new QImage();
    image->load("G:/Qt_coding/clipboard/test.png");
 
    QClipboard *clip=QApplication::clipboard();
    clip->setPixmap(QPixmap::fromImage(*image));
    //clip->setImage(*image);
}

复制文件:

setMimeData(QMimeData *src, Mode mode = Clipboard):
表示将剪贴板数据设置为QMimeData数据,QMimeData支持文本、html、图片、文件等。​​​​​​​

void MainWindow::on_pushButton_clicked()
{
    QList<QUrl> copyfile;
    QUrl url=QUrl::fromLocalFile("G:\\test.txt");    //待复制的文件
    if(url.isValid()){
        copyfile.push_back(url);
    }else{
        return;
    }
    QMimeData *data=new QMimeData;
    data->setUrls(copyfile);
 
    QClipboard *clip=QApplication::clipboard();
    clip->setMimeData(data);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会飞的鱼-blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值