Qt剪貼板


  在Qt中使用剪貼板技術是非常簡單的,直接使用QClipboard類就可以存取窗口系統的剪貼板。在Qt中是使用QMimeData類來表示剪貼板交換的數據,將一些常用的數據存入到剪貼板可以使用setText(),setImage()和setPixmap()函數。相對應的取數據可以使用text(),image()和pixmap()函數。

  下面,通過一個簡單的例子來說明這一點。從QWidget繼承一個子類ClipboardWidget,該類的頭文件clipboardwidget.h如下:

#ifndef CLIPBOARDWIDGET_H
#define CLIPBOARDWIDGET_H

#include <QtGui>

class ClipboardWidget : public QWidget
{
    Q_OBJECT
    
public:
    ClipboardWidget(QWidget *parent = 0);
    ~ClipboardWidget();

private slots:
    void setClipboard();   //設置剪貼板的內容
    void getClipboard();   //獲取剪貼板的內容

private:
    QLineEdit *sourceEdit;
    QLineEdit *targetEdit;
};

#endif 

  clipboardwidget.cpp文件如下:

#include "clipboardwidget.h"

ClipboardWidget::ClipboardWidget(QWidget *parent)
    : QWidget(parent)
{
    sourceEdit = new QLineEdit;
    targetEdit = new QLineEdit;
    QLabel *sourceLabel = new QLabel("source :");
    QLabel *targetLabel = new QLabel("target :");

    sourceLabel->setBuddy(sourceEdit);
    targetLabel->setBuddy(targetEdit);

    QPushButton *sourceButton = new QPushButton;
    sourceButton->setText("copy");
    QPushButton *targetButton = new QPushButton;
    targetButton->setText("paste");

    QHBoxLayout *layout1 = new QHBoxLayout;
    layout1->addWidget(sourceLabel);
    layout1->addWidget(sourceEdit);

    QHBoxLayout *layout2 = new QHBoxLayout;
    layout2->addWidget(targetLabel);
    layout2->addWidget(targetEdit);

    QHBoxLayout *layout3 = new QHBoxLayout;
    layout3->addWidget(sourceButton);
    layout3->addWidget(targetButton);

    QVBoxLayout *mainlayout = new QVBoxLayout;
    mainlayout->addLayout(layout1);
    mainlayout->addLayout(layout2);
    mainlayout->addLayout(layout3);
    mainlayout->addStretch();

    setLayout(mainlayout);

    connect(sourceButton, SIGNAL(clicked()), this, SLOT(setClipboard()));
    connect(targetButton, SIGNAL(clicked()), this, SLOT(getClipboard()));
}

ClipboardWidget::~ClipboardWidget()
{
}

void ClipboardWidget::setClipboard()
{
    QClipboard *clipboard = QApplication::clipboard();
    clipboard->setText(sourceEdit->text());
}

void ClipboardWidget::getClipboard()
{
    QClipboard *clipboard = QApplication::clipboard();
    targetEdit->setText(clipboard->text());
}

  main.cpp文件如下:

#include <QtGui/QApplication>
#include "clipboardwidget.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    ClipboardWidget w;
    w.show();
    
    return a.exec();
}

  界面運行結果如下,在source輸入字符串"this is clipboard test",然后點擊copy按鈕,再點擊paste按鈕,在target就會粘貼這一字符串。總的來說,Qt實現剪貼板是很簡單的。

                                                


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM