• 390阅读
  • 3回复

[讨论]Qt应用程序中调用定时或QFileSystemThread监听某个目录下的文件变化的问题 [复制链接]

上一主题 下一主题
离线lwei24
 

只看楼主 倒序阅读 楼主  发表于: 01-11
如题,Qt应用程序中调用定时器或QFileSystemThread监听某个目录下的文件变化,发现microsoft word文件在该监听目录下无法保存,提示由于文件许可证错误,word无法完全保存操作。但只要把定时器或QFileSystemThread移除,软件运行的同时,这个目录下就能正常保存word文档。在Qt应用程序的代码里,每次打开文件后我都会将它关闭,按理说既然软件在运行过程中没有占用word文档,它应该能保存才对。因为参考text文本不管有定时器或QFileSystemThread监听这个目录,它都能保存。在Qt应用程序在运行的过程中,为什么唯独microsoft word文件保存呢?各位大佬,不知道你们是否碰到过类似的问题?欢迎各位大佬们指点迷津,小弟感激不尽,在线等……
离线20091001753

只看该作者 1楼 发表于: 01-11
QFileSystemWatcher
(づ ̄ 3 ̄)づ
离线lwei24

只看该作者 2楼 发表于: 01-11
回 20091001753 的帖子
20091001753:
QFileSystemWatcher

版主,去掉QFileSystemWatcher,只剩下QTimer定时器,它也会。以前QTimer定时器放在主线程里,后面我把它移动到子线程中,继承QThread,重写run函数,具体代码如下:
void MyThread::run(){
    QTimer gTimer;
    gTimer.setInterval(3000);
    connect(&gTimer, &QTimer::timeout, [=](){
        onTimerOut();
    });
    gTimer.start();
    this->exec();
}
整个子线程中在onTimerOut里遍历某个指定的目录,目的是想获取该目录下的文件状态、属性。在onTimerOut只有用过一次打开fopen_s文件,但打开之后,就立刻fclose了,为什么microsoft word在定时器遍历的目录下无法保存呢?从我代码的逻辑上分析,并没有去占用word文档呀,难道是因为占用了那个目录,也会影响word保存吗?在使用wps打开word的情况下,不管有没有定时器遍历那个目录或QFileSystemWatcher监听那个目录,都不影响word在那个目录下保存。所以一直在找原因分析,这个为啥呢?
  
离线20091001753

只看该作者 3楼 发表于: 01-11
不要总怀疑是自己的问题,也可能是 office 的问题。

试试排除法,比如 WPS
(づ ̄ 3 ̄)づ
快速回复
限100 字节
 
上一个 下一个