Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

自定义信号槽 #19

Open
xiayesuifeng opened this issue Apr 15, 2018 · 21 comments
Open

自定义信号槽 #19

xiayesuifeng opened this issue Apr 15, 2018 · 21 comments

Comments

@xiayesuifeng
Copy link

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

@kitech
Copy link
Owner

kitech commented Apr 16, 2018

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

@xiayesuifeng
Copy link
Author

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

@kitech
Copy link
Owner

kitech commented Apr 16, 2018

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

@xiayesuifeng
Copy link
Author

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

@kitech
Copy link
Owner

kitech commented Apr 16, 2018

这个项目有这个功能吗?

@xiayesuifeng
Copy link
Author

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

@kitech
Copy link
Owner

kitech commented Apr 16, 2018

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

@xiayesuifeng
Copy link
Author

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

@kitech
Copy link
Owner

kitech commented Apr 16, 2018

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

@xiayesuifeng
Copy link
Author

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

@kitech
Copy link
Owner

kitech commented Apr 16, 2018

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

@xiayesuifeng
Copy link
Author

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

@kitech
Copy link
Owner

kitech commented Apr 16, 2018

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

@xiayesuifeng
Copy link
Author

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

@kitech
Copy link
Owner

kitech commented Apr 16, 2018

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

@xiayesuifeng
Copy link
Author

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

@xiayesuifeng
Copy link
Author

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

@kitech
Copy link
Owner

kitech commented Apr 17, 2018

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

@xiayesuifeng
Copy link
Author

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

@kitech
Copy link
Owner

kitech commented Apr 29, 2018

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

@kitech
Copy link
Owner

kitech commented Oct 14, 2018

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants