日期:2014-05-20  浏览次数:20883 次

请教下QT和Swing交互问题
本帖最后由 thefirstz 于 2013-11-05 22:42:47 编辑
项目在Linux平台,使用QT做界面,包含了几个widget,其中一个widget用QT的QX11EmbededContainer嵌入了一个用Java Swing写的应用程序窗体。但不幸的是只要操作过Swing窗口(即使是点一下鼠标),别的widget就无法接收键盘事件,例如在别的widget点击ListViewItem的Rename,就一直处于等待输入状态,键盘输入无法显示,后来发现所有键盘事件都被Swing抢走。如果测试比较多,偶尔会受到Xlib: unexpected async reply出错信息,进而进程hang死。以上问题只限于键盘,而鼠标操作没有问题,如果在其他widget上点击下鼠标的右键,弹出右键菜单,然后进行重命名之类的操作倒是可以把键盘事件抢过来。

请教下各位在改进设计方面有什么建议?

------解决方案--------------------
建议用QProcess打开java Swing做的程序,这样就不会挂掉。
------解决方案--------------------
如果能拦截java的绘图事件的话,我建议直接把java生成的图像绘制到Qt的控件上,由这个Qt的空间将java widget的时间传递给java
------解决方案--------------------


不是不让在项目中挑战不确定性因素么。。