Qt和WPF比较---控件布局和消息响应

 所谓大道归一,其实很多的方法,虽然初期不同,但发展到一定程度后,往往又会出现惊人的相似之处。

  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操作直接决定了源和目的两个对象以及各自的触发和响应。如果对二者做一个比较的话, 前者依赖其设计精良的布局层次,后者则给与绑定以充分的自由度,而结果都是实现了更加方便的响应机制。

  其实类似的还有很多,只是控件布局和消息响应作为表示层最重要的要素,所以就比较突出。

你可能感兴趣的:(Qt和WPF比较---控件布局和消息响应)