问题标签 [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.

0 投票
5 回答
46603 浏览

c++ - Qt 信号可以返回一个值吗?

Boost.Signals允许使用槽的返回值来形成信号的返回值的各种策略。例如添加它们,形成vector它们,或返回最后一个。

普遍的智慧(在 Qt 文档[编辑:以及对此问题的一些答案]中表达)是 Qt 信号不可能发生这样的事情。

但是,当我在以下类定义上运行 moc 时:

moc 不仅没有抱怨返回类型为非 void 的信号,而且似乎以允许返回值传递的方式积极地实现它:

所以:根据文档,这件事是不可能的。那么 moc 在这里做什么呢?

插槽可以有返回值,那么我们现在可以将带有返回值的插槽连接到带有返回值的信号吗?毕竟,这可能吗?如果有,有用吗?

编辑:我不是要求解决方法,所以请不要提供任何解决方法。

编辑:它显然在Qt::QueuedConnection模式下没有用(虽然QPrintPreviewWidget API也没有,但它仍然存在并且很有用)。但是Qt::DirectConnectionQt::BlockingQueuedConnection(或者Qt::AutoConnection,当它解析为 时Qt::DirectConnection)呢?

0 投票
1 回答
262 浏览

c++ - 使用 boost::signal 时出现“没有匹配的调用”编译器错误

在文件 A.hpp 中,我有

所以在文件 A.cpp 中,我有

在文件 B.hpp 中,我有一个类,它有一个我想连接Entities的静态成员函数,如下所示:(为简洁起见,省略了命名空间)receiveSignalCreateBulletsignal_createBullet

最后在文件 C.cpp 中,我signal_createBullet这样使用:

A 和 B 编译成功(使用 g++),但 C 失败并显示以下错误消息:

在试图弄清楚这一点时,我格式化了我的调用和错误消息中的第一个候选者,以便更轻松地比较它们:

除了候选人使用“便携式”语法这一事实(不,将我的代码切换为使用便携式风格没有区别)我认为这两个调用之间没有区别,除了我调用中的最后一件事是int&候选人有一个int。我尝试int从信号中删除参数以查看是否是问题所在,但事实并非如此。

有人知道为什么我会收到此错误吗?

0 投票
2 回答
2693 浏览

c++ - 是否需要构建 boost.signals2 库?

我的系统在构建 boost 库时遇到了问题。我知道大多数 boost 库(幸运的是)只是不需要构建的标头(有一些例外)。是否需要构建 boost :: signals2 库?boost.signals2 库是否也依赖于 boost.signals 库?

0 投票
1 回答
6128 浏览

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

0 投票
4 回答
5363 浏览

c++ - C++ 成员函数指针,boost::signals

我有以下情况,(代码更好)

所以问题是,我如何将“成员函数”指针传递给 Register 方法。还有,这样可以吗?我想要/需要的是某种代表注册系统,所以如果有人能指出我正确的方向,我将不胜感激。提前谢谢。

0 投票
2 回答
5524 浏览

c++ - 增强信号连接管理

在过去的两个晚上,我一直在努力解决这个问题,但没有任何积极的结果。在 boost 信号中,每次我想将一个类的成员函数连接到另一个类的信号时,如果我想稍后断开连接,我必须将结果连接保存在一个变量中。如果以后,我想将同一个成员函数连接到其他类信号(成员函数仍然与以前的类信号连接),我必须保存这个新连接以便管理它。我的问题是,有什么办法可以避免这种情况吗?

0 投票
1 回答
4133 浏览

c++ - 错误:函数返回一个函数

尽管至少有一个类似的问题,但我仍然会问我的问题,因为那个问题还没有解决,而且看起来更复杂。我试图简化我的。

我有一个使用 .h 的 .cpp 文件,如下所示,编译这些棚错误如下。任何想法都值得赞赏。请注意,简化代码是为了尽量减少仅显示有问题的部分。

FC_boost_prove.h:

FC_boost_prove.cpp:

编译错误:

环境:Ubuntu 10.10,g++(Ubuntu/Linaro 4.4.4-14ubuntu5)4.4.5

0 投票
1 回答
876 浏览

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 日更新)多亏了这个建议,我通过这样做解决了这个问题:

0 投票
2 回答
4998 浏览

c++ - 信号与信号2

我的应用程序可能会受益于使用 boost 的信号库之一而不是本土解决方案。

该应用程序是多线程的,但进行信号处理的部分是单线程的。

如果多线程不是问题,是否有任何理由更喜欢 Boost.Signals2 而不是 Boost.Signal?

0 投票
0 回答
420 浏览

c++ - C++ 升压信号复制连接

我知道 boost::signal 是不可复制的,但是有没有人可以遍历连接并复制连接?例如,将所有插槽和它们带到另一个信号?

我问是因为我有一个类充当数组的包装器,并且每当数组中的数据发生变化时,该类都会发出信号。我正在使用指向信号的指针,但显然将信号指针与对象的其余部分一起复制是没有意义的。

所以我想知道是否可以迭代信号并复制附加的函数?

如果我不能用升压信号做到这一点,是否有一个信号库可以让我做到这一点?