QfileSystemWatcher不起作用

时间:2016-05-11 14:21:27

标签: qt filesystems filesystemwatcher

这就是我初始化观察者的方式:

  QFileSystemWatcher watcher;
  bool isWatched = watcher.addPath("../stylesheets/main.style");
  if (isWatched) qDebug() << "Stylesheet is being watched.";
  connect(&watcher, &QFileSystemWatcher::fileChanged, this, &PCLViewer::updateStyle );

但是当我修改,删除或重命名文件时,我的更新样式函数永远不会被调用!我也试过像这样连接插槽和信号:

connect(&watcher, SIGNAL(fileChanged(QString)), this, SLOT(updateStyle(QString)) );

updateStyle函数的签名是:

public slots:
    void updateStyle(const QString &path);

我正在使用ubuntu。

2 个答案:

答案 0 :(得分:0)

如果有人遇到相同的问题。

尝试一下:

QFileSystemWatcher *watcher = new QFileSystemWatcher();
bool beingWatched = watcher->addPath("Enter your path here");
if (beingWatched ) qDebug() << "Being watched";
QObject::connect(watcher, SIGNAL(fileChanged(QString)), this, SLOT(handleFileChanged(QString)));

我不知道为什么,但是至少在我的系统上,您需要创建一个指针来发出信号,否则它将不起作用。

答案 1 :(得分:-1)

插槽功能签名错误。我不得不使用void updateStyle (QString path);来调用它。