QfileSystemWatcher 不工作

QfileSystemWatcher doesn't work

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

  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。

插槽函数签名错误。我必须使用 void updateStyle (QString path); 才能调用它。

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

试试这个:

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)));

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