kitech/qt.go

自定义信号槽

xiayesuifeng opened this issue · 21 comments

有自定义信号槽的示例吗。我看了eg下的示例,里面只有用自带的信号。但是自定义信号也需要用到

thanks, I will think about that.
say what you think about the usage if you want, thanks.

比如,不同widget间通讯就用到了信号槽,如果要传递自己的东西就要自定义。比如一个listwidget。如果自定义itemwidget,上面有个按钮,那就需要信号槽,为了传递itemwidget上的信息,就需要自定义了。

有道理,看上去需要加强自定义widget功能。现在没有的话好像能够自己实现,go的函数传递还是比较方便的。需要从这个使用过程中提取通用模式,看看怎么实现这个语法比较好。

看样子要把自己项目中的therecipe/qt替换成qt.go还需要一点时间才能替换

这个项目有这个功能吗?

有,但是不支持传递自定义类型,比如type struct。。。。

方便给个使用实例,或者链接?
为啥支持了一半功能?

therecipe的qt是使用cgo的。所以如果要用自定义信号槽。就必须要用他的qtmoc生成三个文件,其中一个就是cpp文件,我不知道是不是我写的不对,他也没提到自定义信号支不支持自定义类型。qtmoc自动生成的cpp文件中的定义他是直接把自定义类型的名字写上去,然后编译的时候就报错了。示例他的项目上有

qt.go中没有额外的命令在编译之前生成代码,可能需要其他方式实现。有空再考虑一下。

therecipe的qt编译官方是推荐用他的工具编译的,但是我不太喜欢,更喜欢直接go build

+1,我也是这么考虑的,不想再用额外的命令包一层了。
qt.go的好处是编译的时候完全不依赖Qt,可以完全go命令搞定

如果你的qt.go完全支持qt的东西了,我是完全支持你的项目的,上次我用那个库编译居然用了20分钟,还是单核编译

wow, qt.go的项目编译最多也就10,20秒的,我就是受不了那编译速度和内存使用才开的这种方式。
只是现在功能没那么全面,我在用这做一个小的IM界面,凑和用也还行,其中没有的功能可以用有一些其他实现方式。不过还是多谢提需求帮助改进。
你那在做什么程序?

我在做一个图形化安装arch的安装器.并且是遵守官方安装方式的。用包管理器联网安装。不喜欢manjaro那种,魔改太多

很好,archlinux就是安装过程不行。我平时用的也是archlinux。

不是不行,是对小白不友好

或许可以利用chan实现类似信号槽的功能

chan这种方式需要接收端阻塞读取,而接收端一般也得是UI线程,qt的事件循环与chan阻塞读取不容易整合到一起的。

你有没有考虑过你在go func...里除了信号槽还能如何优雅的通知ui线程更新ui

考虑过,碰到过,还没想到太好的方法
深度整合到qt的evevtloop也许可以。

go side custom signal/slot: #30 (comment)