在哪里建立连接是否重要
Does it matter where the connection is made?
如果连接
在对象上的位置很重要,我就会感到不安。例如,通常我会在发出可能发出信号的调用之前执行此操作,但有时如果它是节点,例如在调用之前不存在的 QNetworkRep,我必须在之后执行此操作。也许在建立连接之前,我还必须进行一些检查。
在建立连接以将此信号连接到插槽之前,是否有可能发出信号?
例如:
ClassA::function() {
ClassB b;
b.someCall();
connect(&b, SIGNAL(finished()), this, SLOT(someSlot()));
}
ClassB::someCall() {
emit finished();
}
老虎机会叫这里吗?这可能不是一个非常实际的示例,因为在这种情况下,您可能只使用返回值。但在某些情况下,我会这样做,例如,如果"someCall"是一个你可以单步执行的例程,它可能会失败,要么是该例程中的网络请求失败,要么是我们一开始就遇到了一些错误。无论哪种方式,都应该发出"failed(("信号,并有一个插槽来处理任何类型的故障。例如;
ClassB::someCall() {
allocate "something"
if(something == NULL) emit finished();
QNetworkReply *reply = someNetworkAccessManager.put(something);
connect(reply, SIGNAL(finished()), this, SIGNAL(finished()));
}
所以这里我们有一个调用,它几乎可以立即发出 finish((,或者在一段时间后发出。如果我在进行此调用后创建连接,第一个 finish(( 会被捕获吗?
不,moc 处理 QT 的连接宏,并创建执行信号和插槽魔术所需的所有基础。 只要 MOC 在尝试解析函数调用时将代码添加到项目的位置的可见性在编译器的范围内,一切都会好起来的。在实践中,我们尽可能早地将这些连接调用放在头中,即在声明对象之后,在使用对象之前,在标头中。
相关文章:
- 是否有 Windows 用户空间函数来枚举连接的网络共享?
- 某些 boost::asio 异步函数是否将处理程序连接到操作,以便处理程序被触发一次?
- 如何在 c++ 中确定 tcp 客户端是否连接
- SDLnet检查TCPsocket是否已关闭连接
- 如果代码中没有连接任何插槽,是否有理由发出Qt信号?
- TCP/IP 客户端是否可以连接到无法访问的 IP
- 将 QObject 用作类成员并将该成员用作连接的上下文是否安全?
- 如何检查LLDB是否可以连接到二进制
- 在使用 Poll() 的 TCP 服务器 - 客户端连接中,我是否需要手动设置事件?我从来没有到达 POLLOUT 来写
- 如何在C API中检查MySql连接是否处于活动状态
- 如何检查网格内的点是否垂直/水平连接?(彼此相距1)
- 是否可以将一个类别的插槽或常规功能从一个类连接到另一个类的插槽或常规功能?(QT)
- 我怎么知道我的服务器是否在一段时间内没有连接
- 查看电脑是否连接到指定网络的编程方式
- 确定插槽是否连接到给定信号
- 检查mac os x中是否连接了套接字
- 如何检查套接字是否连接
- QTcpSocket -检查是否连接
- 有没有办法确定Windows计算机是否连接了触控板和鼠标
- 检查在linux环境下使用c++是否连接局域网设备