以前以为Qt比较麻烦,今天看了一下,发现它其实不比Java难。
首先Qt有非常详细的文档。这个对于开发者来说是十分重要的,纵览现在的流行开发平台,不管是Java,还是微软的平台,都有为开发人员提供详实的文档和指南。如果没有文档支持,开发过程会相当痛苦。这一点我深有体会,前段时间用libpcap写点儿小程序,这个库的所有文档就是一页man page,我甚至不知道某个函数的参数到底是什么类型。
其次,Qt的跨平台性能不输Java。Qt现在支持大多数桌面平台,Windows,Linux和Unix,Mac,手机平台上面的应用也已经成熟。开发者不用更改一行代码,就可以使自己的应用程序运行在每一个操作系统中。
还有,Qt被Nokia收购之后推出了配套的IDE,Qt Creator。这个IDE强大且美观,包含方便的图形界面设计工具,图形化调试工具,手机界面模拟器以及多样化的版本控制工具支持。
总体来说,Qt的易用性是不错的,易于上手,易于开发;但是至于性能,包括速度和安全性,我目前还没有一个清晰地认识。但我相信Nokia里面的那帮人会不断想方设法的提升Qt性能的,毕竟Nokia现在手里的王牌也只有这个了。
Qt之中提供了方便的消息传递机制:信号和槽机制(Signals and Slots),这也是Qt的核心机制,用于对象之间的通信。他的格式如下:
connect(Object1, SIGNAL(signal), Object2, SLOT(slot));
当Object1的信号被触发时,Object2的相应槽就会给以相应。当然,上面只是信号与槽的一种连接方式,其他方式还可能是:
一个信号与另外一个信号相连,即一个信号触发另外一个信号:
connect(Object1, SIGNAL(signal1), Object2, SIGNAL(signal2));
一个信号与多个槽相连:
connect(Object1, SIGNAL(signal), Object2, SLOT(slot1)); connect(Object1, SIGNAL(signal), Object3, SLOT(slot2));
同样的,一个槽也可以响应多个信号:
connect(Object1, SIGNAL(signal1), Object2, SLOT(slot)); connect(Object3, SIGNAL(signal3), Object2, SLOT(slot));
简单的例子:
#include#include int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton b("Quit"); b.show(); QObject::connect(&b, SIGNAL(clicked()), &app, SLOT(quit())); return app.exec(); }
Comments