查看: 106|回复: 0

ZedBoard学习手记(八) 更大的目标!在Linux下开发图形用户界面

[复制链接]

主题

好友

3932

积分

版主

  • TA的每日心情
    无聊
    2015-8-17 09:38
  • 签到天数: 361 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2014-1-20 21:30:25 |显示全部楼层
    在Linux下做GUI,比较简单的方法是使用QT。QT一直被用于跨平台的应用程序开发,之前属于Nokia,现在被卖给了Digia,开源版本的主页是https://qt-project.org/。
    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进行安装。
    兔子已经上传了一个安装包到快传,共享时间有限,需要的自行下载:https://kuai.xunlei.com/d/YWFYMZRCJOAY
    现在最新的版本为5.0 Beta ,兔子使用的还是稳定版本4.8.3,安装完成后,在Ubuntu的导航栏中输入Qt,选择打开Qt Creator。

    下面先写一个简单的软件(当然是HelloWorld)练习一下。新建一个工程,选择Qt GUI应用。

    输入工程名称及路径,Qt Creator会自动建立一个与工程同名的文件夹。

    选择目标平台,这里要在Ubuntu下运行调试,所以选桌面。

    因为这里创建的是一个Qt GUI应用,Qt Creator会自动为工程创建一个窗口,这个窗口是以类的形式进行封装的,为它起名为HelloQT,基类是QmainWindow。

    工程建立好后,双击左侧的helloqt.ui打开主窗口设计界面。

    这个界面基本与Visual Studio类似,在设计界面中,左边是控件列表,右边是属性列表。不过兔子感觉,属性列表里所能涵盖的项目与VS相比十分有限,很多的操作还要通过代码来执行,自动补全功能也非常蛋疼。

    在设计界面中,为目标窗口添加一个Push Button和一个Label(拖进窗口里就行),分别命名为ButtonHello和LabelHello,我们要做的就是实现单击Button,改变Label的文本内容。

    用过VB.NET或者C#的朋友应该清楚,这里只需要插入一个Button_Clicked的事件(Event),就能实现此功能。在QT中,与事件相对应的是信号槽(Signal Slot),用来传递按钮单击时产生的信号。右击Button选择转到槽。

    信号类型选择clicked()。

    IDE会自动切换到代码界面,为这个槽输入所需功能代码,与VS的另一个不同之处是,许多东西在VS中是可以修改的属性(比如这个Text),在QT里则无法通过操作属性赋值,而是要调用一个方法来执行,好不习惯啊。

    代码如下,浅显易懂,就是通过setText方法将Label的文本设置为“Hello QT!”。
    void HelloQT::on_ButtonHello_clicked()
    {
    ui->LabelHello->setText("Hello QT!");
    }
    保存,点击运行按钮,Qt Creator会自动编译运行工程。

    好了看看效果吧。

    这个工程生成的可执行文件可以直接在Ubuntu下运行,用file指令查看应用程序信息,得知这是一个为x86 64-bit系统编译的程序,想要在ZedBoard上跑——无论是板子自带的Demo系统还是Linaro——还需要重新编译。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /5 下一条

    手机版|电路城

    GMT+8, 2019-9-17 13:49 , Processed in 0.078922 second(s), 13 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz!

    返回顶部