Qt 的一个设计问题请教? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
salamanderMH
V2EX    问与答

Qt 的一个设计问题请教?

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

    问题

    按之前的习惯,我把业务要用到的请求方法都放到了一个类中,类似叫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     Solana     1052 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 18:02 PVG 02:02 LAX 11:02 JFK 14:02
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86