【发布时间】:2020-01-15 15:24:28
【问题描述】:
当一个文件被更改时,信号应该触发 1 次,但对我来说它可以工作多次。
在 settings 功能中,我要求尺寸并打印出来
parser::parser(QObject *parent) : QObject(parent)
{
setings();
qDebug()<< baseWay <<"\n";
fsWatcher = new QFileSystemWatcher();
fsWatcher->addPath( baseWay + "auth.log" );
QObject::connect(fsWatcher, SIGNAL( fileChanged(QString) ), this, SLOT( changed(QString) ));
}
我更改文档后,信号处理了 2 次,虽然我保存了文档并更改了 1 次。
void parser::changed(const QString &flName)
{
QFileInfo qfi(flName);
qDebug() << "name = " << flName << "size = " << qfi.size();
}
为什么 QFileSystemWatcher 会发出 2 次信号?
为什么 QFileInfo 在第一次请求时产生零大小?
我编辑文件记事本++
【问题讨论】:
-
您是否使用其他编辑器进行了测试?也许记事本?也许双重发射与notepad ++如何写入文件有关。
-
@drescherjm,记事本修复,但如果文件被覆盖或删除,则没有任何变化
-
Windows 下 QFileSystemWatcher 的行为存在几个未解决的错误。 https://bugreports.qt.io/browse/QTBUG-41119 和 https://bugreports.qt.io/browse/QTBUG-38757
标签: c++ qt qfilesystemwatcher qfileinfo