• 103阅读
  • 0回复

[讨论]QClipboard 修改文本可以 修改url不行 [复制链接]

上一主题 下一主题
离线thro3388
 

只看楼主 倒序阅读 楼主  发表于: 01-05

最新想做一个监视剪贴板复制操作 。并把复制的文件的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;
        }
    }
}
快速回复
限100 字节
 
上一个 下一个