qml组件下拉列表的实现

由于ComboBox需要定制,于是根据已有的的例子,自己重写了一下该控件的交互和样式。主要修改的地方有两点:(1)当鼠标离开下拉区域时,下拉列表将自动收回。不过可能实现的效果不是很好,当鼠标滑动速度较快时列表收回的动作并没有被触发。(2)调整了高亮效果。当鼠标划过和被选中时的状态有所区分,主要响应了三个槽函数: onClick(),onEnter(),onExited()。
在修改上述的第一点时,遇到了一点问题: 父组件和子组件的MouseArea,只能有其中一个会响应鼠标的事件。也就是当Mouse事件被其中一个组件捕获了,那么该事件就不会再传递下去,其他组件就捕捉不到这个事件了。所以当子组件MouseArea有效时(用作高亮效果的展示 ),父组件MouseArea被屏蔽了(检测不到鼠标是否离开了下拉区域)。没有想到好的解决方法,就用了一种有点取巧但又很简单的方法: 子组件被包含在父组件中,并且父组件的尺寸比子组件大一些;当鼠标坐标移出子组件时,父控件MouseArea就有效了。

代码见这里:
http://www.rritw.com/a/JAVAbiancheng/ANT/20130109/245259.html

我想问一下, qml5.0 写自己定制的插件怎么搞,qt那边的demo 是4.8 的,貌似有点不兼容

两者确实不兼容,你可以在launchpad上搜索:i-help-you,这个是最初版本的优客助手,是qt5.0写的,里面的qml文件或许对你有帮助,如果有疑问,可以继续探讨下。