V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
FindHao
V2EX  ›  Go 编程语言

go 如何与 qt 结合?

  •  
  •   FindHao · 2021-07-06 06:09:43 +08:00 · 4057 次点击
    这是一个创建于 1255 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在项目的一些代码是 go 写的,需要写 gui 。我以前只用 qt 写过 gui,不管是原始的 qt 还是 pyqt 。

    现在的想法是:把 go 那部分代码静态编译成.a 库文件,然后用 qt 来导入这个库,调用库函数。

    请教有经验的朋友们,这样的方案可行吗?

    如果不可行。现在有推荐的 go gui 框架吗?

    19 条回复    2021-08-13 21:08:55 +08:00
    Hanggi
        1
    Hanggi  
       2021-07-06 06:36:09 +08:00
    FindHao
        2
    FindHao  
    OP
       2021-07-06 06:41:10 +08:00 via Android
    @Hanggi 还有个 libffi 。我主要想问的是,前面的部分。因为这些框架都是直接用 go 写的,我觉得不太方便。
    abcysn
        3
    abcysn  
       2021-07-06 09:01:41 +08:00 via iPhone
    @Hanggi 没一个好用的
    jorneyr
        4
    jorneyr  
       2021-07-06 09:02:23 +08:00
    Go 提供 Web 或者 RPC 服务,打包成一个可执行文件。
    Qt 写界面,Qt 程序启动的时候启动 Go 程序开启服务,然后 Qt 程序和 Go 程序交互。
    missdeer
        5
    missdeer  
       2021-07-06 09:06:58 +08:00   ❤️ 2
    FindHao
        6
    FindHao  
    OP
       2021-07-06 09:07:27 +08:00
    @jorneyr #4 可执行文件暴露的东西太多了。如果别人直接找到了这个可执行文件,起码这部分功能就比较容易地被“破戒”了。不过可以作为备选的选择。谢谢
    FindHao
        7
    FindHao  
    OP
       2021-07-06 09:09:14 +08:00
    @missdeer #5 cool! 感谢。https://github.com/missdeer/KarenMeu/blob/master/utils/Makefile 这个 makefile 编译的 target 就是你的 go 部分代码对吧?然后 client 目录是 qt 写的界面。
    missdeer
        8
    missdeer  
       2021-07-06 09:21:37 +08:00
    @FindHao 是的,单独写了个 Makefile 编译 go 代码生成.a,如果是给 msvc 用,还要多一步转成 dll/lib 以及处理一下 cgo 生成的.h,稍微麻烦点,gcc/clang 没这毛病
    FindHao
        9
    FindHao  
    OP
       2021-07-06 09:53:41 +08:00
    @missdeer #8 mingw 有问题吗?我是在 windows 下用的 mingw
    whitehack
        10
    whitehack  
       2021-07-06 10:03:57 +08:00
    如果只在 windows 平台 ,gui 要求不高的话 可以看看这个 https://github.com/whtiehack/wingui
    wfhtqp
        11
    wfhtqp  
       2021-07-06 10:17:00 +08:00
    Vegetable
        12
    Vegetable  
       2021-07-06 10:23:46 +08:00   ❤️ 1
    听我一句劝,如果你能,请使用现在的 GO 代码+http+electron 。别折腾 Go+GUI 了,没一个好用的。
    DefoliationM
        13
    DefoliationM  
       2021-07-06 10:40:28 +08:00
    用 gRPC 这种,坚决不要用 https://github.com/therecipe/qt 这个,超级难用,编译巨慢。
    missdeer
        14
    missdeer  
       2021-07-06 10:50:15 +08:00
    @FindHao mingw 是用 gcc/clang,所以没这毛病
    BeautifulSoap
        15
    BeautifulSoap  
       2021-07-06 11:06:41 +08:00 via Android
    最近在用 go 写 gui 还试过几个库的血泪提醒大家,千万别想不开用 go 写 gui
    lizhenda
        16
    lizhenda  
       2021-07-06 12:26:23 +08:00
    我用过 https://github.com/lxn/walk 这个 go 的 Windows GUI 库写了个程序,写界面特别蛋疼,限制很大,只能是原生 win 的界面。所以还是老实让 go 来写服务吧,electron 或者其它专业的图形化引擎来写 GUI 吧。
    dongtingyue
        17
    dongtingyue  
       2021-07-07 09:38:37 +08:00
    也可以另辟蹊径,使用 web,然后把前端打包进程序。限制条件就是必须有浏览器。好处是页面可以很酷炫
    ilovesusu
        18
    ilovesusu  
       2021-07-11 19:32:25 +08:00
    惊了 竟然没有人提 Fyne https://github.com/fyne-io/fyne
    MrJing1992
        19
    MrJing1992  
       2021-08-13 21:08:55 +08:00
    go 不太擅长吧
    如果你会前端,可以用: https://www.electronjs.org/ ,跨平台
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5445 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 02:48 · PVG 10:48 · LAX 18:48 · JFK 21:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.