问题标签 [boost-signals]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Qt 信号可以返回一个值吗?
Boost.Signals允许使用槽的返回值来形成信号的返回值的各种策略。例如添加它们,形成vector
它们,或返回最后一个。
普遍的智慧(在 Qt 文档[编辑:以及对此问题的一些答案]中表达)是 Qt 信号不可能发生这样的事情。
但是,当我在以下类定义上运行 moc 时:
moc 不仅没有抱怨返回类型为非 void 的信号,而且似乎以允许返回值传递的方式积极地实现它:
所以:根据文档,这件事是不可能的。那么 moc 在这里做什么呢?
插槽可以有返回值,那么我们现在可以将带有返回值的插槽连接到带有返回值的信号吗?毕竟,这可能吗?如果有,有用吗?
编辑:我不是要求解决方法,所以请不要提供任何解决方法。
编辑:它显然在Qt::QueuedConnection
模式下没有用(虽然QPrintPreviewWidget API也没有,但它仍然存在并且很有用)。但是Qt::DirectConnection
和Qt::BlockingQueuedConnection
(或者Qt::AutoConnection
,当它解析为 时Qt::DirectConnection
)呢?
c++ - 使用 boost::signal 时出现“没有匹配的调用”编译器错误
在文件 A.hpp 中,我有
所以在文件 A.cpp 中,我有
在文件 B.hpp 中,我有一个类,它有一个我想连接Entities
的静态成员函数,如下所示:(为简洁起见,省略了命名空间)receiveSignalCreateBullet
signal_createBullet
最后在文件 C.cpp 中,我signal_createBullet
这样使用:
A 和 B 编译成功(使用 g++),但 C 失败并显示以下错误消息:
在试图弄清楚这一点时,我格式化了我的调用和错误消息中的第一个候选者,以便更轻松地比较它们:
除了候选人使用“便携式”语法这一事实(不,将我的代码切换为使用便携式风格没有区别)我认为这两个调用之间没有区别,除了我调用中的最后一件事是int&
候选人有一个int
。我尝试int
从信号中删除参数以查看是否是问题所在,但事实并非如此。
有人知道为什么我会收到此错误吗?
c++ - 是否需要构建 boost.signals2 库?
我的系统在构建 boost 库时遇到了问题。我知道大多数 boost 库(幸运的是)只是不需要构建的标头(有一些例外)。是否需要构建 boost :: signals2 库?boost.signals2 库是否也依赖于 boost.signals 库?
eclipse-cdt - Can not compile boost::signal tutorial using gcc 4.5 on ubuntu 11.04
I'm trying to complete the boost::signal tutorial at http://www.boost.org/doc/libs/1_47_0/doc/html/signals/tutorial.html#id2850736
However Eclipse CDT shows parsing errors with whichever syntax I use
I have
Preferred syntax
Invalid template arguments at signal
Method 'connect' could not be resolved
Portable syntax
Method 'connect' could not be resolved
Symbol 'signal2' could not be resolved
I use eclipse 3.7
c++ - C++ 成员函数指针,boost::signals
我有以下情况,(代码更好)
所以问题是,我如何将“成员函数”指针传递给 Register 方法。还有,这样可以吗?我想要/需要的是某种代表注册系统,所以如果有人能指出我正确的方向,我将不胜感激。提前谢谢。
c++ - 增强信号连接管理
在过去的两个晚上,我一直在努力解决这个问题,但没有任何积极的结果。在 boost 信号中,每次我想将一个类的成员函数连接到另一个类的信号时,如果我想稍后断开连接,我必须将结果连接保存在一个变量中。如果以后,我想将同一个成员函数连接到其他类信号(成员函数仍然与以前的类信号连接),我必须保存这个新连接以便管理它。我的问题是,有什么办法可以避免这种情况吗?
c++ - 错误:函数返回一个函数
尽管至少有一个类似的问题,但我仍然会问我的问题,因为那个问题还没有解决,而且看起来更复杂。我试图简化我的。
我有一个使用 .h 的 .cpp 文件,如下所示,编译这些棚错误如下。任何想法都值得赞赏。请注意,简化代码是为了尽量减少仅显示有问题的部分。
FC_boost_prove.h:
FC_boost_prove.cpp:
编译错误:
环境:Ubuntu 10.10,g++(Ubuntu/Linaro 4.4.4-14ubuntu5)4.4.5
c++ - 编译错误:没有类模板,初始化器太多,没有匹配的函数
我无法使用 boost::signals 删除编译错误。任何想法将不胜感激。
由于我一直在移植 2 年前编写的程序以适应当前环境,因此我对 boost::signals 仍然很陌生。下面的代码是我修改原始程序以简化问题的目的。
我想直接解决我的问题。但除此之外,因为有很多关于 boost::signals 的问题(但我已经放弃弄清楚哪个是正确的/最接近我的情况),我会给答案中建议的人投票为这个问题提供更合适的标题,以使其成为一个更好的存档问题。
boostProve_Doc.h
boostProve_View.cpp:
错误:
环境:Ubuntu 10.10,g++(Ubuntu/Linaro 4.4.4-14ubuntu5)4.4.5
2011 年 9 月 30 日更新)多亏了这个建议,我通过这样做解决了这个问题:
c++ - 信号与信号2
我的应用程序可能会受益于使用 boost 的信号库之一而不是本土解决方案。
该应用程序是多线程的,但进行信号处理的部分是单线程的。
如果多线程不是问题,是否有任何理由更喜欢 Boost.Signals2 而不是 Boost.Signal?
c++ - C++ 升压信号复制连接
我知道 boost::signal 是不可复制的,但是有没有人可以遍历连接并复制连接?例如,将所有插槽和它们带到另一个信号?
我问是因为我有一个类充当数组的包装器,并且每当数组中的数据发生变化时,该类都会发出信号。我正在使用指向信号的指针,但显然将信号指针与对象的其余部分一起复制是没有意义的。
所以我想知道是否可以迭代信号并复制附加的函数?
如果我不能用升压信号做到这一点,是否有一个信号库可以让我做到这一点?