这就是我初始化观察者的方式:
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。
答案 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);
来调用它。