在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實現剪貼板是很簡單的。