• Build

要直接从Git编译,参考这个文档(居然有中文版本,对于在Mac上使用稳定的4.8版本,参考这个文档)。从网上下的zip包一大堆问题。然后我在linux和osx下都测试过,居然在osx下容易很多,而在linux下要一大堆依赖。

  • 运行例子

tutorial放在qtquick1目录下,例子还算丰富,文档在这里。运行QML文件需要qtbase/bin/QMLViewer.app。一个QML文件描述了界面显示和事件触发,所以跟HTML很像,但描述语法不类似,我猜只有javascript是一样的。

 

Hello world。可以看出支持Lion的全屏模式,也支持中文。

疑问:1)有HTML的一套,C++的位置在哪里?2)还有CSS么?3)qtwebkit在这里面扮演何种角色?4)Javascript性能如何?真的是第一公民还是如同Gnome Shell只是一个UI的扩展?

从Qt5的介绍上看,主要的改进是图形性能。

最近发现一工具:wkhtmltopdf,使用qt webtkit widget把html转为PDF。这个也是使用QT来调用webkit的例子,看来QT对webkit封装的很好,毕竟是从KHTML发展出来的。

Windows下面编译

还是使用上面的文档,要安装Git, Python, Perl。编译器我用的是Visual Studio Express 2012。Configure时使用destop的opengl实现,并且设置set CL=/MP,这样可以多核同时编译(nmake会自动检测CPU核心数量,不用make -j 4)。我E3-1230的U大概50分钟编译完。可以下载编译好的SDK。

Windows开发环境的配置

windows下可以用MinGW + Eclipse CDT + Plugin,主要参考这个帖子。使用下来,感觉这个工具还是很挫。一个小小的Hello world也要折腾半天,想想还是xcode好用点。在用向导创建项目的时候,注意选择tool chain,这样后续的手工配置就少些。这里要选MinGW的toolchain,也可以用Autotools,这个比Makefile的更高级,当然,你机器得先安装。对于Mac系统,可以直接用port安装。

很多年没有碰C++,各种不适应。比如:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    qt2 w;
    w.show();
    return a.exec();
}

这个里面变量w没有初始化就直接使用?而IDE中代码编辑器的语法错误也很诡异,有的时候clean & build下项目就好了,就是说错误提示不及时,这可能是编译器的局限导致。

对于开发UI界面,QT有图形化的编辑工具Designer,生成文件为.ui结尾,然后这个文件会被转换为c++文件。Makefile可以帮忙做这个事情(QML应该不需要这个转换)。还有个配置文件.pro,里面定义了项目的依赖项,比如如果使用了webkit,需要加上一项QT += webkit。这个文件Makefile可能也会预处理。

默认编译出来的.exe文件是动态链接的,运行时需要qt的dll文件,把qt包的目录加到PATH中就可以了。

用Qt Creator来开发

我后来发现,其实用Qt Creator就很方便了,不用配置环境,直接可以运行实例的程序。从qt-project.org的下载页面上可以选择qt library + qt creator的安装包。