清明时节雨

导航

WPF与Qt

    所谓大道归一,其实很多的方法,虽然初期不同,但发展到一定程度后,往往又会出现惊人的相似之处。
    WPF和Qt是分别隶属微软和Nokia,前者是一个商业开发平台,后者则完全开源。但他们都提供给界面开发者使用。在使用了一段时间之后,发现二者其实有很多相同的思路。
就界面的组织而言,WPF使用xaml来定义控件,完全学习了html的方式。控件之间可以任意组合,任意包含。这相对于MFC方便了许多,而这种嵌套的思路也是很符合发展趋势的。而Qt在这方面也有类似的做法。所有的控件元素全部继承自QWidget,这点没有WPF那么纯粹,从WinForm开始,C#语言就要求所有的类都继承自object了。QWidget中可以设置QLayout,QLayout中有可以加入其它的QWidget。这也使其实现了控件布局的灵活组织。区别仅仅就在于WPF可以直接进行嵌套,Qt则需要使用QLayout进行过度。我觉得效果是相同的,可能实现上有所差别。WPF使用标记语言进行控件设计,直接嵌套结构依然很清晰。而Qt仍然使用传统的C++,加入QLayout的过度更有层次感,否则代码容易混乱。
    在消息机制上,两者也都有很突出的特点。我觉得这种特点就是更加自由的消息机制,Qt中称为槽函数。相对于MFC来说,这种消息机制更加方便。WPF实现主要通过控件层之间的消息自然传递。而Qt的connect操作直接决定了源和目的两个对象以及各自的触发和响应。如果对二者做一个比较的话,前者依赖其设计精良的布局层次,后者则给与绑定以充分的自由度,而结果都是实现了更加方便的响应机制。
    其实类似的还有很多,只是控件布局和消息响应作为表示层最重要的要素,所以就比较突出。

posted on 2011-11-17 10:43  学而不思  阅读(16256)  评论(0编辑  收藏  举报