V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
salamanderMH
V2EX  ›  问与答

Qt 的一个设计问题请教?

  •  
  •   salamanderMH · 2020-02-16 16:23:01 +08:00 · 1172 次点击
    这是一个创建于 1532 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题

    按之前的习惯,我把业务要用到的请求方法都放到了一个类中,类似叫httpHelper吧,里头 new 了一个QNetworkAccessManager,通过这个 nam 发送请求,类内部connectfinished的信号,绑定到一个内部方法统一处理响应,这个方法里头会处理一些业务( json 解析,错误处理),然后emit一个自定义的信号。

    上面是我的做法,但这样做,我在外部其他类中,很多地方都要connect这个自定义信号,而 connect 有个问题,只要连接了,之前的 slot 都会被触发,所以我得把之前的 slot 都得disconnect掉,很多方法都都这样,这是我的设计问题吧。

    ps:我就刚看了 slot 和 signal 就开始写了,理解不深。

    5 条回复    2020-02-16 18:17:07 +08:00
    imn1
        1
    imn1  
       2020-02-16 16:37:11 +08:00
    返回多个信号呢?
    masje
        2
    masje  
       2020-02-16 16:38:10 +08:00
    “任何软件工程遇到的问题都可以通过增加一个中间层来解决”
    mxalbert1996
        3
    mxalbert1996  
       2020-02-16 17:23:14 +08:00 via Android
    如果你是想实现每个 Callback 只被执行一次,那么可以在 slot 函数里 disconnect,如果你想让后面的 Callback 覆盖前面的 Callback,那么除了 connect 前 disconnect 之外,你还可以用一个 std::function 成员来存 Callback。
    vincentxue
        4
    vincentxue  
       2020-02-16 17:30:55 +08:00
    我发了封邮件给你,附上了一些代码,我们可以邮件里探讨。
    salamanderMH
        5
    salamanderMH  
    OP
       2020-02-16 18:17:07 +08:00
    @vincentxue 谢谢,我研究下。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2649 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:33 · PVG 23:33 · LAX 08:33 · JFK 11:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.