在Linux下做GUI,比较简单的方法是使用QT。QT一直被用于跨平台的应用程序开发,之前属于Nokia,现在被卖给了Digia,开源版本的主页是。QT的开发语言是C++和QML,可以用各种工具来进行开发设计,官方的IDE是QT Creator。要说明的是,兔子没学过C++,只用过VB.NET(这甚至能追溯到初中的爱好,而我又一直都是个"不务正业"的人,总是无可救药地对与"正业"关系不大的知识产生兴趣。),不过面向对象嘛都是共通的,如果用过Visual Studio,熟悉下语法就应该可以开始开发了。首先要安装QT,兔子做开发的时候(Nokia还没把QT完全裁掉)Nokia制作了Qt SDK,将Qt Lib、Qt Creator等悉数集成,最后一版更新应该是QtSdk-offline-linux-x86-v1.2.1.run,只要在Ubuntu下双击运行就能完成全部安装工作,十分方便。不过现在Nokia自身难保,早已无暇顾及Qt的更新工作了,Digia也没有更新SDK的动作,并且封了之前的下载地址,所以只能分开下载安装Qt Creator和Qt Lib了,具体配置方法请自行研究。两天迅雷快传不能用了,过一段我会上传一个快传地址,让大家能共方便地使用SDK进行安装。兔子已经上传了一个安装包到快传,共享时间有限,需要的自行下载:现在最新的版本为5.0 Beta ,兔子使用的还是稳定版本4.8.3,安装完成后,在Ubuntu的导航栏中输入Qt,选择打开Qt Creator。
![](../img/ele-ee/ee-241565okwh5de3q5.jpg)
下面先写一个简单的软件(当然是HelloWorld)练习一下。新建一个工程,选择Qt GUI应用。
![](../img/ele-ee/ee-24157i0naizcewfz.jpg)
输入工程名称及路径,Qt Creator会自动建立一个与工程同名的文件夹。
![](../img/ele-ee/ee-24158ajroxwd4xte.jpg)
选择目标平台,这里要在Ubuntu下运行调试,所以选桌面。
![](../img/ele-ee/ee-24160ejcfg2xyp0k.jpg)
因为这里创建的是一个Qt GUI应用,Qt Creator会自动为工程创建一个窗口,这个窗口是以类的形式进行封装的,为它起名为HelloQT,基类是QmainWindow。
![](../img/ele-ee/ee-241612sra4c0lh2g.jpg)
工程建立好后,双击左侧的helloqt.ui打开主窗口设计界面。
![](../img/ele-ee/ee-24163cwfkif0vs5b.jpg)
这个界面基本与Visual Studio类似,在设计界面中,左边是控件列表,右边是属性列表。不过兔子感觉,属性列表里所能涵盖的项目与VS相比十分有限,很多的操作还要通过代码来执行,自动补全功能也非常蛋疼。
![](../img/ele-ee/ee-24166k3qw1blqls4.jpg)
在设计界面中,为目标窗口添加一个Push Button和一个Label(拖进窗口里就行),分别命名为ButtonHello和LabelHello,我们要做的就是实现单击Button,改变Label的文本内容。
![](../img/ele-ee/ee-24168bxrt2c4bwtu.jpg)
用过VB.NET或者C#的朋友应该清楚,这里只需要插入一个Button_Clicked的事件(Event),就能实现此功能。在QT中,与事件相对应的是信号槽(Signal Slot),用来传递按钮单击时产生的信号。右击Button选择转到槽。
![](../img/ele-ee/ee-241693bcm0pnraft.jpg)
信号类型选择clicked()。
![](../img/ele-ee/ee-24172k0qrtg0m1wi.jpg)
IDE会自动切换到代码界面,为这个槽输入所需功能代码,与VS的另一个不同之处是,许多东西在VS中是可以修改的属性(比如这个Text),在QT里则无法通过操作属性赋值,而是要调用一个方法来执行,好不习惯啊。
![](../img/ele-ee/ee-24173imz1zeeqm0r.jpg)
代码如下,浅显易懂,就是通过setText方法将Label的文本设置为"Hello QT!"。void HelloQT::on_ButtonHello_clicked(){ ui->LabelHello->setText("Hello QT!");}保存,点击运行按钮,Qt Creator会自动编译运行工程。
![](../img/ele-ee/ee-24179vhizx1l3aaz.jpg)
好了看看效果吧。
![](../img/ele-ee/ee-24180q30gcwcdnwg.jpg)
这个工程生成的可执行文件可以直接在Ubuntu下运行,用file指令查看应用程序信息,得知这是一个为x86 64-bit系统编译的程序,想要在ZedBoard上跑——无论是板子自带的Demo系统还是Linaro——还需要重新编译。
![](../img/ele-ee/ee-241824whudkbrgos.jpg)