来自C++插件信令的 QML 类型仅发出一次
QML type from C++ Plugin signaling only once
我有一个C++插件,它使用 QFileSystemWatcher 监视文件更改,并将其 fileChanged 信号与自定义 QML 类型插槽连接,如下所示:
//In the custom QML type constructor
QObject::connect(&this->_watcher, SIGNAL(fileChanged(QString)),
this, SLOT(fileChangedSlot(QString)));
插槽功能:
void CustomQMLTypeClass::fileChangedSlot(QString file)
{
Q_UNUSED(file);
emit fileChanged();
}
在 QML 方面:
CustomQMLType{
fileUri: "some/file/path/file.format"
onFileChanged: console.log("File changed")
}
运行程序时一切正常,但是当我这样做时,即:
echo "sth">> some/file/path/file.format
通知仅触发一次。为什么?O.o
显然问题出在 QFileSystemWatcher
,它有时有效,而另一些则无效。由于我可以处理成本,我的快速解决方案是更改插槽:
void CustomQMLTypeClass::fileChangedSlot(QString &file)
{
_watcher.removePath(file);
_watcher.addPath(file);
emit fileChanged();
}
现在它按预期工作,但不知道为什么,也无法理解QFileSystemWatcher
的来源。最后,我认为 KDE 的KDirWatch
要好得多。
相关文章:
- 我是否需要在下一次转移时将所有权*转移回转移队列
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 在C++中一次将矢量值写入多个文件
- 循环中的条件:为什么每次都调用strlen(),而vector.size()只调用一次
- 为什么 zlib 放气初始化调用一次不起作用?
- 在一次迭代中从 txt 文件中读取多行
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- 在头文件和 cpp 文件中使用一次 #pragma 时出现结构重定义错误
- 有没有办法一次声明相同类型的多个对象,并通过一个表达式立即使用相同的右值初始化它们?
- 高级选择排序 - 在一次迭代中搜索两个元素
- 具有相同特征的两个对象是否只在内存中存储一次?无论定义它们的函数是什么,都是不同的
- 如何仅使用一次固定<<设置精度(2)?或者至少恢复到默认行为?
- 什么是仅调用一次并调用参数的控制台应用
- 如何确保用户在一行上提示输入一次时输入名字和姓氏?
- (C++)虽然循环一次不起作用,但我引入了多个变量
- 为什么我的信号处理程序只执行一次?
- 如何使用C++一次读取整个二进制文件
- 花括号使循环运行一次?
- 我的C++ Unity 插件在编辑器中运行一次,但不能运行两次
- 来自C++插件信令的 QML 类型仅发出一次