有没有办法在指定目录(或子文件夹)中的文件触发操作,而不是每次都获取所有修改时间?我问,因为我要检查这个
我遇到以下问题:创建一个QFileSystemWatcher,它可以在Linux上正常运行,但在Windows 7上却无法运行。您能在代码中发现可能使它无法正常工作的任何内容吗?
谢谢。
这是初始化它的代码:
mConfigChangeWatcher = new QFileSystemWatcher();
mConfigChangeWatcher->addPath(config_file_name);
QObject::connect(mConfigChangeWatcher,
SIGNAL(fileChanged(QString)),
this,
SLOT(configFileChanged(QString)));
Run Code Online (Sandbox Code Playgroud)
这应该是完成工作的插槽:
void MyClass::configFileChanged(const QString &file)
{
qDebug() << "Changed: " << file ;
}
Run Code Online (Sandbox Code Playgroud) 我从另一个 StackOverflow 答案中借用了这段代码:
from PyQt4 import QtCore
@QtCore.pyqtSlot(str)
def directory_changed(path):
print('Directory Changed!!!')
@QtCore.pyqtSlot(str)
def file_changed(path):
print('File Changed!!!')
fs_watcher = QtCore.QFileSystemWatcher(['/path/to/files_1', '/path/to/files_2', '/path/to/files_3'])
fs_watcher.connect(fs_watcher, QtCore.SIGNAL('directoryChanged(QString)'), directory_changed)
fs_watcher.connect(fs_watcher, QtCore.SIGNAL('fileChanged(QString)'), file_changed)
Run Code Online (Sandbox Code Playgroud)
问题是,file_changed无论如何都不会被调用。directory_changed例如,在添加文件时可靠地调用,但更改文件内容不会导致调用 file_changed。
我调用了 的一些变体QtCore.SIGNAL('fileChanged(QString)'),例如,QtCore.SIGNAL('fileChanged(const QString &)')无济于事。没有警告或错误——它只是不触发该功能。
推荐?