最新想做一个监视剪贴板复制操作 。并把复制的文件的url替换成自己指定的 。
随手写了一个测试代码,启动进程 鼠标选中文件 ctrl+c复制 触发slotDataChaned i == 0语句 在里面替换掉url 指定成网络文件。
因为修改了数据 会再次触发else语句 我在里面打印 打印出"" 空的 。。怎么实现我要的这个功能 呢? 就是用户复制文件的时候替换掉路径。
int i = 0;
void TClipboardListener::slotDataChaned() {
if (i == 0)
{
//第一次 修改数据
QClipboard *clipboard = QApplication::clipboard();
clipboard->clear();
QMimeData *mimeDataMew = new QMimeData;
QList<QUrl> *urlsTmp = new QList<QUrl>;
QUrl *urlTmp = new QUrl("file://10.0.0.201/11/a1.h");
urlsTmp->push_back(*urlTmp);
mimeDataMew->setUrls(*urlsTmp);
mimeDataMew->setText("file://10.0.0.201/11/a1.h");
clipboard->setMimeData(mimeDataMew);
i = 1;
}
else {
//修改过后会再次触发修改新号。进入这里打印数据
QClipboard *clipboard = QApplication::clipboard();
qDebug() << "text " << clipboard->text();
const QMimeData *mimeData = clipboard->mimeData();
auto urlsTmp1 = mimeData->urls();
for (auto iter = urlsTmp1.begin(); iter != urlsTmp1.end(); iter++)
{
auto url = *iter;
qDebug() << url;
}
}
}