乔山办公网我们一直在努力
您的位置:乔山办公网 > word文档 > 做一个记录剪切板的工具-word剪切板

做一个记录剪切板的工具-word剪切板

作者:乔山办公网日期:

返回目录:word文档

说在前边

有时候写论文,需要大量的【复制】【粘贴】操作,复制完新的却发现之前复制的还要用到,但是已经被新复制的替换掉了,还得去重新复制么?只能这样子。基于此,自己动手写了一个辅助剪切板的工具,很简单不需要太多知识,代码更简单。

选择文件,按Ctrl+V ,路径就被复制到剪切板;剪切版存在图片时,也临时做了备份保存到本地,并不断进行替换。

界面:

做一个记录剪切板的工具

界面二:

显示详细:

做一个记录剪切板的工具

文件备份:

做一个记录剪切板的工具

代码实现

新建工程,调整界面这些就不多说了。

头文件:

做一个记录剪切板的工具

class ClipBord : public QMainWindow
{
 Q_OBJECT
public:
 explicit ClipBord(QWidget *parent = 0);
 ~ClipBord();
protected slots:
 void addData();
 void contextMenuEvent(QContextMenuEvent *event);
 void keyPressEvent(QKeyEvent *event);
 void copy();
private slots:
 void on_checkBox_clicked(bool checked);
 void on_listWidget_currentTextChanged(const QString &currentText);
private:
 Ui::ClipBord *ui;
 QClipboard *b;
 Text *t;
 void saveData(QString data);
 bool isSave;
 QMenu *menu;
 QAction *a;
 int count;
};

获取剪切板

b=QApplication::clipboard();

判断复制到新文本就添加到列表。

做一个记录剪切板的工具

为了程序的简单,只针对文本,与图片进行了保存。

void ClipBord::addData(){
 if(b->mimeData()->hasText()&&isSave){
 ui->listWidget->addItem(b->mimeData()->text());
 saveData(b->mimeData()->text());
 }
 if(b->mimeData()->hasImage()&&isSave){
 QImage img(b->image());
 img.save("img.png");
 }
}

写到文件

具体什么格式完全看自己,想怎么设置怎么设置。

void ClipBord::saveData(QString data){
 if(isSave){
 count++;
 t->appendLine(QString("\\n<YJH:%1>\\n").arg(count)+data+QString("\\n<YJH:%1/>").arg(count));
 }
}

添加右键复制操作

做一个记录剪切板的工具

void ClipBord::keyPressEvent(QKeyEvent *event){
 if(event->modifiers()==Qt::ControlModifier&&event->key()==Qt::Key_V){
 isSave=true;
 }
}

鼠标右键复制时,禁止添加到列表

void ClipBord::copy(){
 isSave=false;
 int c=ui->listWidget->currentRow();
 if(c>-1&&c<ui->listWidget->count()){
 b->setText(ui->listWidget->item(c)->text());
 }else{
 b->setText("");
 }

按下Ctrl+V 开始记录

void ClipBord::keyPressEvent(QKeyEvent *event){
 if(event->modifiers()==Qt::ControlModifier&&event->key()==Qt::Key_V){
 isSave=true;
 }
}

关联剪切板与添加数据槽函数

connect(b,SIGNAL(changed(QClipboard::Mode)),this,SLOT(addData()));

所有代码:

ClipBord::ClipBord(QWidget *parent) :
 QMainWindow(parent),
 ui(new Ui::ClipBord)
{
 ui->setupUi(this);
 menu=new QMenu();
 a=menu->addAction("Copy");
 t=new Text("clipbord_data.txt",MODE::Read);
 b=QApplication::clipboard();
 on_checkBox_clicked(false);
 connect(b,SIGNAL(changed(QClipboard::Mode)),this,SLOT(addData()));
 isSave=true;
 count=0;
 t->appendLine("\\n"+QDateTime::currentDateTime().toString("yyyyMMdd_hhmmss"));
 connect(a,SIGNAL(triggered(bool)),this,SLOT(copy()));
}
ClipBord::~ClipBord()
{
 delete ui;
}
void ClipBord::addData(){
 if(b->mimeData()->hasText()&&isSave){
 ui->listWidget->addItem(b->mimeData()->text());
 saveData(b->mimeData()->text());
 }
 if(b->mimeData()->hasImage()&&isSave){
 QImage img(b->image());
 img.save("img.png");
 }
}
void ClipBord::saveData(QString data){
 if(isSave){
 count++;
 t->appendLine(QString("\\n<YJH:%1>\\n").arg(count)+data+QString("\\n<YJH:%1/>").arg(count));
 }
}
void ClipBord::on_checkBox_clicked(bool checked)
{
 ui->textEdit->setVisible(checked);
 if(checked){
 setFixedWidth(480);
 }else{
 setFixedWidth(160);
 }
}
void ClipBord::contextMenuEvent(QContextMenuEvent *event){
 int c=ui->listWidget->currentRow();
 if(c>-1&&c<ui->listWidget->count()){
 menu->exec(event->globalPos());
 }
}
void ClipBord::keyPressEvent(QKeyEvent *event){
 if(event->modifiers()==Qt::ControlModifier&&event->key()==Qt::Key_V){
 isSave=true;
 }
}
void ClipBord::copy(){
 isSave=false;
 int c=ui->listWidget->currentRow();
 if(c>-1&&c<ui->listWidget->count()){
 b->setText(ui->listWidget->item(c)->text());
 }else{
 b->setText("");
 }
}
void ClipBord::on_listWidget_currentTextChanged(const QString &currentText)
{
 ui->textEdit->setText(currentText);
}

到此已经结束。

说明:文章中的Text 是我自己封装的读写操作,这个很容易实现就不多做说明。

欢迎关注我。

相关阅读

  • 做一个记录剪切板的工具-word剪切板

  • 乔山办公网word文档
  • word剪切板,说在前边有时候写论文,需要大量的【粘贴】操作,复制完新的却发现之前复制的还要用到,但是已经被新复制的替换掉了,还得去重新复制么。
  • 剪切板功能增强工具-word剪切板

  • 乔山办公网word文档
  • word剪切板,Windows系统不断升级,对于剪切板还保留着比较原始的设计,比如只能保留一条之类的,有朋友想要一些剪切板增强的工具,下面分享三个,这里先稍微描述下功能。
关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网