剪贴板操作
剪贴板的操作经常和前面所说的拖放技术在一起使用,因此我们现在先来说说剪贴板的相关操作。大家对剪贴板都很熟悉。我们可以简单的把它理解成一个数据的存储池,可以把外面的数据放置进去,也可以把里面的数据取出来。剪贴板是由操作系统维护的,所以这提供了跨应用程序数据交互的一种方式。Qt 已经为我们封装好很多关于剪贴板的操作,因此我们可以在自己的应用中很容易的实现。下面还是从代码开始:
clipboarddemo.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #ifndef CLIPBOARDDEMO_H #define CLIPBOARDDEMO_H
#include <QtGui/QWidget>
class ClipboardDemo : public QWidget { Q_OBJECT
public: ClipboardDemo(QWidget *parent = 0);
private slots: void setClipboard(); void getClipboard(); };
#endif
|
clipboarddemo.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| #include <QtGui> #include "clipboarddemo.h"
ClipboardDemo::ClipboardDemo(QWidget *parent) : QWidget(parent) { QVBoxLayout *mainLayout = new QVBoxLayout(this); QHBoxLayout *northLayout = new QHBoxLayout; QHBoxLayout *southLayout = new QHBoxLayout;
QTextEdit *editor = new QTextEdit; QLabel *label = new QLabel; label->setText("Text Input: "); label->setBuddy(editor); QPushButton *copyButton = new QPushButton; copyButton->setText("Set Clipboard"); QPushButton *pasteButton = new QPushButton; pasteButton->setText("Get Clipboard");
northLayout->addWidget(label); northLayout->addWidget(editor); southLayout->addWidget(copyButton); southLayout->addWidget(pasteButton); mainLayout->addLayout(northLayout); mainLayout->addLayout(southLayout);
connect(copyButton, SIGNAL(clicked()), this, SLOT(setClipboard())); connect(pasteButton, SIGNAL(clicked()), this, SLOT(getClipboard())); }
void ClipboardDemo::setClipboard() { QClipboard *board = QApplication::clipboard(); board->setText("Text from Qt Application"); }
void ClipboardDemo::getClipboard() { QClipboard *board = QApplication::clipboard(); QString str = board->text(); QMessageBox::information(NULL, "From clipboard", str); }
|