0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式Qt-动手编写并运行自己的第1个ARM-Qt程序

码农爱学习 来源:码农爱学习 作者:码农爱学习 2022-06-02 09:06 次阅读

上篇文章介绍了如何搭建在Linux开发板中搭建Qt的运行环境,并测试了Qt自带的例程。

本篇,来介绍如何自己编写一个Qt程序,并将编译结果放到Linux开发板中运行。

1 Windows上编写Qt程序

因为Qt是支持跨平台的,所以我们可以先在Windows平台上编写和查看Qt的运行效果,然后再通过交叉编译,编译出ARM Linux平台的可执行文件,最终放到开发板中查看运行结果。

Windows上需要安装Qt Creator软件来开发Qt程序,该软件的安装过程,和大多数软件的安装过程都差不多,在此不再演示安装过程。

下面介绍如何创建一个Qt工程。

1.1 新建Qt工程

Qt Creator本质也是一个集成开发环境,与Visual Studio之类的创建工程的流程类似,其软件界面如下:

poYBAGKXfviACv21AAEijaCVbAg618.png

创建工程,选择左上角菜单中的“文件”->"新建文件或项目",弹出如下窗口,然后默认选择Qt Widgets Application,然后右下加点击“Choose"按键:

pYYBAGKXfv6ACFgOAABV9vt-L84049.png

出现选择项目工程的存放位置,然后再下一步:

poYBAGKXfwaAejQwAAAkwzfLE7s296.png

这里会用到Visual Studio中的一些功能,默认即可,然后下一步:

pYYBAGKXfwyAXFQ0AAAkcLkzY5E226.png

然后要选择类信息,基类里可选的有QMainWindow、QWidget和QDialog,这里我们选择QWidget。

下面还有一个”创建界面“的勾选框,那个是用来通过图形化的方式设计显示界面,本篇暂用不到,先取消勾选,然后点下一步

poYBAGKXfxOALLBTAAA02acWN-A919.png

到这里,Qt工程就创建好了,点完成:

poYBAGKXfxiARD60AAAmzaE7fls127.png

创建的Qt工程如下,主要包含4个文件:

clock.pro:Qt工程的配置文件

main.cpp:主程序

widget.cpp:窗口程序

widget.h:窗口程序的头文件

pYYBAGKXfx2AA02ZAAD1xORuFww084.png

1.2 代码编写(时钟程序)

Widget的构造函数

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    QTimer *timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(update()));
    timer->start(1000);

    setWindowTitle(tr("Clock"));
    setMinimumSize(200, 200); //设置最小尺寸
}

首先创建了一个Qt的定时器,设置超时时间为1s(1000ms),超时时间到,更新表盘的显示。

第2行是Qt中最常用的信号和槽机制:

connect(timer, SIGNAL(timeout()), this, SLOT(update()));

信号和槽,简单的立即,就是信号SIGNAL出现后(1s定时器超时),触发槽SLOT函数执行(更新表盘的显示)

界面设计

时钟程序中的表盘,表针等,都是通过画图的方式实现的,具体的代码如下:

void Widget::paintEvent(QPaintEvent *event)
{
    int side = qMin(width(), height());
    QTime time = QTime::currentTime();

    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing);
    painter.translate(width()/2, height()/2); //画图的基准位置
    painter.scale(side/200.0, side/200.0); //随窗口尺寸自动缩放

    //表盘
    for (int i=0; i;>

第2句:

QTime time = QTime::currentTime();

是来获取系统的当前时间。

1.3 编译运行

现在Windows平台中编译运行,查看效果:

pYYBAGKXfyaAWkg1AAHFzNAdmQs888.png

该时钟是可以根据窗口大小的变化,自动进行放到或缩小显示的:

pYYBAGKXfyuACZ49AABJoS-M_wo902.png

2 Ubuntu中交叉编译Qt

Windows中测试通过后,就需要编译出能够在ARM平台运行的可执行程序了,这里需要在Ubuntu中进行编译。

2.1 复制源文件到Ubuntu中

将Windows中的QT工程源码,复制到Ubuntu中,注意.user文件是不需要的,这个是Windows平台的编译配置。

poYBAGKXfzGAbDjRAABQvuWe9qk049.png

复制到Ubuntu中的合适位置:

pYYBAGKXfziAX0eTAAAzxIo-gRY421.png

2.2 交叉编译

编译ARM平台的Qt程序,需要使用ARM平台的编译工具链。

上篇文章,在搭建Qt环境,编译Qt源码时,已经生成了ARM平台的Qt编译工具链,其位置是在上篇文章介绍的make install那一步的安装位置,我的是在”/home/xxpcb/myTest/imx6ull/otherlib/qt/qt-everywhere-src-5.12.9/arm-qt/“,这里需要先用到它的qmake工具先自动生成Makefile文件,再通过make指令进行编译。

首先的使用qmake生成Makefile,进入程序源码目录,执行qmake指令:

/home/xxpcb/myTest/imx6ull/otherlib/qt/qt-everywhere-src-5.12.9/arm-qt/bin/qmake

成功执行之后,就可以看到自动生成的Makefile文件:

pYYBAGKXfz-AHhnJAACvLQXs1SM877.png

然后执行make指令进行编译:

make
poYBAGKXf0aAUiwlAAHXhcKuUfU908.png

编译完可以看到可执行文件clock。

我们可以再使用file命令查看该可执行文件的平台信息:

file clock
poYBAGKXf02AalYqAAHj4jcziv8433.png

可以看到该可执行文件是ARM平台的。

3 Linux开发板中运行Qt程序

3.1 复制可执行文件到开发板中

此次测试,仍然使用的是网络位置挂载根文件系统的方式,通过如下指令将可执行文件复制到根文件系统中(开发板中):

sudo cp clock ~/myTest/nfs/rootfs/myProj/qt/mytest/
pYYBAGKXf1WALW_FAAHLQaP6e1U234.png

3.2 查看开发板中的运行效果

然后就可以在开发板中执行该程序,查看效果了:

./clock

运行效果如下:

pYYBAGKXf1uAOfwrAAJK_7y7SJc130.png

由于板子的网络时间还不能正确获取,这里显示的时间其实是不对的,不过表针仍然会1秒1秒的走动。

4 总结

本篇详细介绍了如何自己编写一个Qt程序,如何通过交叉编译,最终放到开发板中执行的过程。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9030

    浏览量

    366571
  • 嵌入式
    +关注

    关注

    5062

    文章

    18984

    浏览量

    302379
  • Linux
    +关注

    关注

    87

    文章

    11216

    浏览量

    208761
  • 开发板
    +关注

    关注

    25

    文章

    4914

    浏览量

    97100
  • Qt
    Qt
    +关注

    关注

    1

    文章

    301

    浏览量

    37795
收藏 人收藏

    评论

    相关推荐

    嵌入式开发常用软件有哪些?

    的扩展程序商店安装扩展以拓展软件功能。 2.Visual Studio 简称VS: 它是一IDE,集成开发环境。验证C程序或是进行c#程序开发,可以用它。一些与
    发表于 09-09 15:22

    七大嵌入式GUI盘点

    MiniGUI-Standalone三种运行模式运行。它对中文的支持很友好,支持GB2312与BIG5字符集,其他字符集也可以轻松加入。 Qt for MCU 是一专为
    发表于 09-02 10:58

    嵌入式QT常见开发方式有哪些?

    嵌入式QT常见开发方式有哪些? 嵌入式工程师在学习和使用Qt进行开发时,常见的几种开发方式包括: 1.Qt Widgets编程: 通过C
    发表于 08-12 10:05

    【飞凌嵌入式OK527N-C开发板体验】4. mpp与播放器+ubuntusdk qt环境搭建

    就好,毕竟是开发嵌入式环境 配置QT时发现与手册 有区别,选项都 不同,不太明白 原因 最后发现是自己加配置时选 成了QCC 配置的时候 注意这里要选择新建的编译器配置 新建 hello world
    发表于 07-27 14:59

    嵌入式系统中集成Rust和Qt的实践

    Rust 拥有丰富的库生态系统,用于序列化和反序列化、异步操作、解析不安全输入、线程、静态分析等,而 Qt 是一 C++ 工具包,支持跨各种平台的丰富的、基于 GUI 的应用程序,从 iOS 到
    发表于 05-03 10:26 1648次阅读
    在<b class='flag-5'>嵌入式</b>系统中集成Rust和<b class='flag-5'>Qt</b>的实践

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-在ELF 1开发环境中使用QT Creator进行远程调试

    Qt Creator是一跨平台的集成开发环境(IDE),主要用于开发基于Qt框架的应用程序。它提供了强大的远程调试功能,开发人员可以在自己
    发表于 04-30 09:45

    飞凌嵌入式ElfBoard ELF 1板卡-在ELF 1开发环境中使用QT Creator进行远程调试

    Qt Creator是一跨平台的集成开发环境(IDE),主要用于开发基于Qt框架的应用程序。它提供了强大的远程调试功能,开发人员可以在自己
    发表于 04-30 09:35

    飞凌嵌入式ElfBoard ELF 1板卡-卸载ubuntu上安装的QT Creator的方法

    进入QT安装的目录,例如安装的QT版本是Qt5.6.2:elf@ubuntu:~$ cd /opt/Qt5.6.2/运行命令:elf@ubu
    发表于 04-10 10:15

    Qt上位机开发实战案例

    Qt Creator是一用于Qt开发的轻量级跨平台集成开发环境。 Qt Creator可带来两大关键益处: 提供首个专为支持跨平台开发而设计的集成开发环境 (IDE),
    的头像 发表于 03-13 12:31 2176次阅读
    <b class='flag-5'>Qt</b>上位机开发实战案例

    3562-Qt工程编译说明

    Qt 环境、交叉编译 工具链等。当用户使用 Qt Creator 工具和 X86 端 Qt 环境编写编译
    的头像 发表于 03-05 09:19 407次阅读
    3562-<b class='flag-5'>Qt</b>工程编译说明

    Qt For OpenHarmony图形化的进展突破

    Qt 适配 OpenHarmony 意义 Qt 是一 C++ 跨平台开发框架,主要用于开发图形用户界面(Graphical User Interface,GUI)程序,具有跨平台类库
    的头像 发表于 02-02 14:29 1355次阅读
    <b class='flag-5'>Qt</b> For OpenHarmony图形化的进展突破

    QT串口通信的简单使用

    QT串口通信是上位机和下位机通信常用的通信方式, 也是学习QT必须学会的基础知识, 这篇就简单介绍一下QT串口通信的简单使用.
    的头像 发表于 01-15 09:27 1773次阅读
    <b class='flag-5'>QT</b>串口通信的简单使用

    如何用RK3588编写应用程序

    由于笔者平时的嵌入式开发工作,主要是集中在嵌入式Linux和Qt应用开发方向,因此,本篇文章我们尝试参考飞凌官方提供的嵌入式Linux+Qt
    发表于 12-19 13:24

    在创龙科技T113-i工业开发板上部署Qt应用

    Qt在工业上的使用场景包括工业自动化、嵌入式系统、汽车行业、航空航天、医疗设备、制造业和物联网应用。Qt被用来开发工业设备的用户界面、控制系统、嵌入式应用和其他工业应用,因其跨平台性和
    的头像 发表于 12-03 10:22 1555次阅读
    在创龙科技T113-i工业开发板上部署<b class='flag-5'>Qt</b>应用

    嵌入式Linux应用程序开发详解-1

    电子发烧友网站提供《嵌入式Linux应用程序开发详解-1章.pdf》资料免费下载
    发表于 11-16 11:17 0次下载
    <b class='flag-5'>嵌入式</b>Linux应用<b class='flag-5'>程序</b>开发详解-<b class='flag-5'>第</b><b class='flag-5'>1</b>章