【问题标题】:Where to declare object returned from Qt SIGNAL/SLOT?在哪里声明从 Qt SIGNAL/SLOT 返回的对象?
【发布时间】:2013-11-30 01:54:00
【问题描述】:

我有一个用 C++ 编写的 FTP 应用程序。现在我正在通过 VS2010 的 Qt 插件向我的项目添加一个简单的 GUI。连接到服务器的机制非常简单。在输入 IP 和 PORT 后,连接已建立并创建了一个对象。这个对象(来自我编写的一个类)可以调用多个函数,例如:请求服务器上的可用文件、下载特定文件等。

我的问题是:如果该对象是在按下按钮(并调用它所链接的函数)后创建的,有没有办法返回该对象?当然有,但是应该如何以及在代码中的何处存储/声明它。这是代码行:

connect(ui.btn_connect,SIGNAL(clicked()),this,SLOT(on_SayConnect()));

如果我想使用连接 (SIGNAL/SLOT) 语法返回对象,我应该如何调用函数“on_SayConnect()”?提前谢谢你。

【问题讨论】:

  • 要将对象返回到哪里?
  • 这就是我问这个问题的原因。我需要将该返回的对象传递给其他函数(调用时,单击按钮后),但我不知道应该在哪里声明或存储它。
  • on_SayConnect() 应该将创建的对象传递到它应该去的任何地方。这应该与 on_SayConnect() 的调用方式无关(通过信号或其他方式)。
  • 如果有两个插槽连接到信号,您认为会发生什么?哪个返回值是真正应该返回到信号发出位置的“真实”值?

标签: c++ qt object return signals-slots


【解决方案1】:

没有使用connect 方法返回值的好方法。如果您的目标是让this 对象(我认为您实际上没有给它命名)将值/对象发送到系统的其他部分,您可以让on_SayConnect 插槽发出所需的信号价值。需要接收该值的任何其他对象都应实现并连接适当的插槽以执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多