精华内容
下载资源
问答
  • Qt开发的一个剪切板查看器小工具(源码),支持text、HTML、图片、URL以及预览,QClipboard
  • QClipBoard.rar

    2020-04-22 20:54:24
    使用QT中QCLipBoard类剪切板模式实现进程间通信,操作代码简单,简单讲述了基本原理和关键代码部分
  • QClipboard使用

    千次阅读 2019-07-14 23:11:08
    QClipboard类提供对系统剪贴板的读写。

    QClipboard类提供对系统剪贴板的读写。

    普通使用

    • 获取剪切板的文本内容。
    QClipboard *clipboard = QApplication::clipboard();
    QString text = clipboard->text();
    
    • 设置剪切板本文内容。
    QClipboard *clipboard = QApplication::clipboard();
    clipboard->setText(newText);
    

    进阶使用

    • 通过QClipboard的mimeData对象来判断剪切板的内容属性。
    • 相对于QClipboard剪切板mimeData可以识别的类型有图像数据,html数据,纯文本数据。
    • 例子:
        (1)获取系统剪切板内容:
    const QClipboard *clipboard = QApplication::clipboard();
    const QMimeData *mimeData = clipboard->mimeData();
    
    if (mimeData->hasImage()) {
        /* 获取剪切板图像数据。 */
        QPixmap pixmap = qvariant_cast<QPixmap>(mimeData->imageData());
        ...
    } 
    else if (mimeData->hasHtml()) {
        /* 获取剪切板html数据。 */
        QString html = mimeData->html();
        ...
    } 
    else if (mimeData->hasText()) {
        /* 获取剪切板纯文本数据。 */
        QString text = mimeData->text();
        ...
    } 
    else {
        setText("Cannot display data");
    }
    

      (2)设置系统剪切板内容:

    QClipboard *clipboard = QApplication::clipboard();
    QMimeData mimeData;
    mimeData.setImageData(QPixmap("hello.png")); // 图像数据
    // mimeData.setHtml("<h1>Heool world.</h1>"); // Html数据
    // mimeData.setText("Hello world."); // 纯文本数据
    clipboard->setMimeData(&mimeData);
    
    展开全文
  • 主要介绍了python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例,需要的朋友可以参考下
  • QClipboard 剪贴板

    千次阅读 2017-12-13 20:19:22
    在Qt中,我们可以使用QClipboard类来访问窗口系统的剪贴板对象。剪贴板为我们在不同的应用间拷贝粘贴数据提供了一种简单的机制。并且,其所支持的数据类型和Qt中的拖放操作所支持的类型相同。 另外,在...

    在Qt中,我们可以使用QClipboard类来访问窗口系统的剪贴板对象。剪贴板为我们在不同的应用间拷贝粘贴数据提供了一种简单的机制。并且,其所支持的数据类型和Qt中的拖放操作所支持的类型相同。

    另外,在QApplication类中,还为我们提供了一个静态方法clipboard(),我们可以使用该方法来获得应用程序的全局剪贴板对象。例如,

    [cpp]  view plain  copy
    1. QClipboard *clipboard = QApplication::clipboard();  
    2. QString originalText = clipboard->text();  
    3. ...  
    4. clipboard->setText(newText);  

    QClipboard类为我们在应用程序间传递简单的数据类型提供了一些便利的方法,如setText()可以用来传递Unicode字符串,setPixmap()和setImage()可以用来传递图片。更复杂的数据类型,则要借助于QMimeData类来完成。

    这些函数的典型使用方式如下:

    [cpp]  view plain  copy
    1. void DropArea::paste()  
    2. {  
    3.     const QClipboard *clipboard = QApplication::clipboard();  
    4.     const QMimeData *mimeData = clipboard->mimeData();  
    5.   
    6.     if (mimeData->hasImage()) {  
    7.         setPixmap(qvariant_cast<QPixmap>(mimeData->imageData()));  
    8.     } else if (mimeData->hasHtml()) {  
    9.         setText(mimeData->html());  
    10.         setTextFormat(Qt::RichText);  
    11.     } else if (mimeData->hasText()) {  
    12.         setText(mimeData->text());  
    13.         setTextFormat(Qt::PlainText);  
    14.     } else {  
    15.         setText(tr("Cannot display data"));  
    16.     }  


    下面,我们就以一个简单的实例,来实际使用一下这几个函数。

    新建一个GUI程序,简单设计界面如下:

    要实现的功能也很简单,就是使用QClipboard来将源控件中的内容拷贝到目的控件中。

    先来看文本的拷贝与粘贴,代码实现如下:

    [cpp]  view plain  copy
    1. //文本拷贝  
    2. void Widget::on_TextCopy_clicked()  
    3. {  
    4.     if(ui->SrcEdit->text().isEmpty())  
    5.     {  
    6.         QMessageBox::information(this"警告""请先输入文本");  
    7.         return;  
    8.     }  
    9.     QClipboard *clipboard = QApplication::clipboard();  
    10.     clipboard->setText(ui->SrcEdit->text());  
    11.     QMessageBox::information(this"提示""拷贝成功");  
    12. }  
    13.   
    14. //粘贴文本  
    15. void Widget::on_TextPaste_clicked()  
    16. {  
    17.     QClipboard *clipboard = QApplication::clipboard();  
    18.     if(clipboard->text().isEmpty())  
    19.     {  
    20.         QMessageBox::information(this"提示""剪贴板不存在文本内容");  
    21.         return;  
    22.     }  
    23.     ui->DestEdit->setText(clipboard->text());  
    24. }  
    文本的拷贝比较简单,只需在拷贝时将输入框中的文本内容设置到应用程序的剪贴板即可;粘贴时,从应用程序的剪贴板中取出文本即可。

    下面来看图片的拷贝与粘贴,代码如下:

    [cpp]  view plain  copy
    1. //拷贝图片  
    2. void Widget::on_PicCopy_clicked()  
    3. {  
    4.     QClipboard *clipboard = QApplication::clipboard();  
    5.     const QPixmap *pixmap = ui->SrcPic->pixmap();  
    6.     if(pixmap == nullptr)  
    7.     {  
    8.         QMessageBox::information(this"提示""请先设置源图像");  
    9.         return;  
    10.     }  
    11.     clipboard->setPixmap(*(ui->SrcPic->pixmap()));  
    12.     QMessageBox::information(this"提示""拷贝成功");  
    13. }  
    14.   
    15. //粘贴图片  
    16. void Widget::on_PicPaste_clicked()  
    17. {  
    18.     QClipboard *clipboard = QApplication::clipboard();  
    19.     if(clipboard->pixmap().isNull())  
    20.     {  
    21.         QMessageBox::information(this"提示""剪贴板不存在图片");  
    22.         return;  
    23.     }  
    24.     ui->DestPic->setScaledContents(true);  
    25.     ui->DestPic->setPixmap(clipboard->pixmap());  
    26. }  
    由于,QClipboard直接提供了setPixmap()和setImage()函数,直接支持了对图片的操作,所以拷贝图片和文本一样,都可以使用该类直接进行完成。

    再来看颜色的拷贝和粘贴,代码如下:

    [cpp]  view plain  copy
    1. //拷贝颜色  
    2. void Widget::on_ColorCopy_clicked()  
    3. {  
    4.     QPalette p = ui->SrcColor->palette();  
    5.     QColor color = p.color(QPalette::Background);  
    6.     QMimeData *data = new QMimeData();  
    7.     data->setColorData(color);  
    8.     QClipboard *clibboard = QApplication::clipboard();  
    9.     clibboard->setMimeData(data);  
    10.     QMessageBox::information(this"提示""拷贝成功");  
    11. }  
    12.   
    13. //粘贴颜色  
    14. void Widget::on_ColorPaste_clicked()  
    15. {  
    16.     QClipboard *clipboard = QApplication::clipboard();  
    17.     const QMimeData *data = clipboard->mimeData();  
    18.     if(data->hasColor())  
    19.     {  
    20.         QColor c = qvariant_cast<QColor>(data->colorData());  
    21.         QPalette p = ui->DestColor->palette();  
    22.         p.setColor(QPalette::Background, c);  
    23.         ui->DestColor->setAutoFillBackground(true);  
    24.         ui->DestColor->setPalette(p);  
    25.     }  
    26.     else  
    27.     {  
    28.         QMessageBox::information(this"提示""剪贴板不存在颜色");  
    29.     }  
    30. }  
    至于颜色的拷贝时,我们先借助于QPalette类,来取到源QLabel的背景色,然后使用QMimeData类将其存储到应用程序的剪贴板中。同样,在粘贴时,也是要借助QMimeData类来完成,并且,因为QColor不属于Qt中的基本类型,所以不存在toXXX()之类的函数,我们必须借助于qvariant_cast()或QVariant::value()方法来完成具体的类型转换。最后,同样是使用QPalette来完成对目的label背景色的改变。注意,必须先调用setAutoFillBackground(true)方法,setPalette()才会生效。

    最后,来看一下HTML文本的拷贝与粘贴,代码如下:

    [cpp]  view plain  copy
    1. //拷贝HTML  
    2. void Widget::on_HtmlCopy_clicked()  
    3. {  
    4.     if(ui->SrcHtml->text().isEmpty())  
    5.     {  
    6.         QMessageBox::information(this"提示""请先设置内容");  
    7.         return;  
    8.     }  
    9.     QClipboard *clipboard = QApplication::clipboard();  
    10.     QMimeData *data = new QMimeData;  
    11.     data->setHtml(ui->SrcHtml->text());  
    12.     clipboard->setMimeData(data);  
    13.     QMessageBox::information(this"提示""拷贝成功");  
    14. }  
    15.   
    16. //粘贴HTML  
    17. void Widget::on_HtmlPaste_clicked()  
    18. {  
    19.     QClipboard *clipboard = QApplication::clipboard();  
    20.     const QMimeData *data = clipboard->mimeData();  
    21.     if(data->hasHtml())  
    22.     {  
    23.         ui->DestHtml->setText(data->html());  
    24.     }  
    25.     else  
    26.     {  
    27.         QMessageBox::information(this"提示""剪贴板不存在HTML");  
    28.     }  
    29. }  

    可见,HTML文本的拷贝与粘贴和上面将的QColor类似,均是借助于QMimeData类来实现的。在此就不详细解释了。

    当然,这个例子中,只涉及到了普通文本,图片,颜色,HTML文本的拷贝于粘贴。至于Qt中的其他数据类型,使用方法基本类似;至于自定义数据类型,只需子类化QMimeData类型即可。



    http://blog.csdn.net/amnes1a/article/details/70739183

    展开全文
  • 学习笔记之QClipBoard

    2020-04-22 20:57:51
    学习笔记之QClipBoard QClipBoard类是对系统剪切板进行操作,可用于进程间通信,但CPU占用率较高,不推荐使用此方法,下面详细介绍QClipBoard的使用。 一、剪切板操作 QClipboard *clipboard = QGuiApplication::...

    学习笔记之QClipBoard

    QClipBoard类是对系统剪切板进行操作,可用于进程间通信,但CPU占用率较高,不推荐使用此方法,下面详细介绍QClipBoard的使用。

    一、剪切板操作

    QClipboard *clipboard = QGuiApplication::clipboard();
    QString originalText = clipboard->text();
    qDebug()<<originalText;//打印剪切板内容

    使用text()函数对系统剪切板内容进行获取,并且打印出来,或者用作他用。

    二、进程间通信

    本节讲述一个进程对桌面进行截取,放置系统剪切板中,然后另一个进程从剪切板取出桌面截屏。

    *桌面截屏操作:*均使用grabWinbdow()函数

    QT4方式

    pixmap=QPixmap::grabWindow(QApplication::desktop()->winId());

    QT5方式

    QScreen *screen =QGuiApplication::primaryScreen();
    pixmap=screen->grabWindow(0);

    将桌面截屏放置剪切板中

    QClipboard *clipboard = QGuiApplication::clipboard();
    clipboard->setPixmap(pixmap);

    开另一进程取剪切板桌面截屏:

    QClipboard *clipboard = QApplication::clipboard();
    pixmap=clipboard->pixmap();

    以上为使用剪切板实现进程通信的主要函数部分。

    展开全文
  • QT的QClipboard类的使用

    2020-12-04 10:40:52
    QClipboard类提供对窗口系统剪贴板的访问。 剪贴板提供了一种简单的机制,可以在应用程序之间复制和粘贴数据。 QClipboard支持与QDrag相同的数据类型,并使用类似的机制。 有关剪贴板的高级用法,请阅读拖放。 应用...

    详细说明
    QClipboard类提供对窗口系统剪贴板的访问。

    剪贴板提供了一种简单的机制,可以在应用程序之间复制和粘贴数据。
    QClipboard支持与QDrag相同的数据类型,并使用类似的机制。 有关剪贴板的高级用法,请阅读拖放。
    应用程序中只有一个QClipboard对象,可以通过QGuiApplication :: clipboard()访问。
    例:

      QClipboard *clipboard = QGuiApplication::clipboard();
      QString originalText = clipboard->text();
      ...
      clipboard->setText(newText);
    展开全文
  • PyQt5之QClipboard剪贴板

    2020-07-08 16:08:38
    PyQt5之QClipboard剪贴板 QClipboard类提供了对系统剪贴板的访问,可以在应用程序之间复制和粘贴数据。QApplication类有一个静态方法clipboard(),它返回对剪贴板对象的引用。 一、QClipboard类中的常用方法 ...
  • Qt的复制功能比较简单,代码...QClipboard *pClip = QApplication::clipboard(); pClip->setText("Hello Qt, 这是Qt复制的内容"); 需要包含的头文件 #include <QClipboard> #include <QApplication>
  • Qt QClipboard 粘贴复制功能学习

    千次阅读 2019-07-31 14:06:35
    粘贴板,这个词相信大家都比较熟悉,比如使用offiece的时候就会有粘贴板,文本编辑的时候Ctrl+C和Ctrl+V的使用,其实也是使用到了粘贴板,在往细了说,从一个文本文件中复制一段内容到另...QClipboard *clipboard =...
  • QClipboard类文档

    2018-05-22 09:06:02
    QClipboard类提供了对窗口系统剪贴板的访问。 #include "qclipboard.h" 继承了QObject。 所有成员函数的列表。 公有成员 void clear () bool supportsSelection () const bool ownsSelection () ...
  • QClipboard 剪切板的操作

    千次阅读 2017-05-23 10:03:36
    包含头文件:#include 设置 1、设置剪切板的图片  QPixmap ixmap = QPixmap::grabWindow(QApplication::desktop()->winId()); ui->label->setPixmap(pixmap.scaled(ui->label->size()));...QClipboard *clipBoard
  • QClipboard类提供了对系统剪切板的访问,可以在应用程序之间复制和粘贴数据,它的操作类似于QDrag类,,并使用类似的数据结构 QApplication类有一个静态方法clipboard(),它的返回值对剪切板对象的引用,任何...
  • void MainWindow::on_pushButton_clipboard_clicked() ... QClipboard *clipboard = QApplication::clipboard(); //获取系统剪贴板指针 QString originalText = clipboard->text(); //获取剪贴板上文本信息 qDebug()
  • import os import sys from PyQt5.QtCore import QMimeData from PyQt5.QtWidgets import (QApplication, QDialog, QGridLayout, QLabel, QPushButton)...
  • qt QClipBoard

    2016-06-27 10:53:00
    QClipboard *clipboard = QApplication::clipboard(); //获取系统剪贴板指针 QString originalText = clipboard->text();//获取剪贴板上文本信息 clipboard->setText(newText);//设置剪贴板内容   上面3行代码很...
  • qt 之 QClipboard

    2014-11-13 14:19:13
    QClipboard *clipboard = QApplication::clipboard(); clipboard->setText(sourceEdit->text());
  • 0431QClipboard

    2019-03-07 11:42:55
    self.setWindowTitle('0431QClipboard') #布局代码 layout = QGridLayout() layout.addWidget(txtCopyButton, 0, 0) layout.addWidget(imageCopyButton, 0, 1) layout.addWidget(htmlCopyButton, 0, 2) ...
  • QClipboard类提供了对系统剪贴板的访问,可以在应用程序之间复制和粘贴数据。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 452
精华内容 180
关键字:

QClipboard