前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >手把手之如何在嵌入式Linux上运行QT应用程序(以百问网imx6ull开发板为例)

手把手之如何在嵌入式Linux上运行QT应用程序(以百问网imx6ull开发板为例)

作者头像
杨源鑫
发布2021-07-07 19:02:54
7.8K0
发布2021-07-07 19:02:54
举报
文章被收录于专栏:嵌入式开发圈嵌入式开发圈

昨天写了一篇Buildroot构建的文章,等待了几个小时,终于编译完了:

Buildroot系统构建学习笔记(以百问网imx6ull开发板为例)

我们将emmc下载到开发板上即可:

这个QT程序我不想吐槽,实在是太卡了,我做了这么久的嵌入式QT开发,都没写过这样的程序,所以,接下来,我要用开发板运行自己写的QT程序:

1、安装QT开发环境

百问网提供的QT安装包和QT的配置方法有一些问题,配置完成后打开qtcreator后代码提示很多东西都找不到,但是又可以正常编译,这就奇怪了,于是我不用他们提供的开发环境,自己独立安装。

ubuntu18.04下安装QT开发环境:

代码语言:javascript
复制
sudo apt-get install cmake qt5-default qtcreator

如果在安装的过程中出现失败,请重新尝试apt-get update后再进行重新安装,不然的话就更新源吧!安装完毕以后,在终端敲qt然后按Tab键就可以看到qt已经成功被安装到系统里了:

2、配置交叉编译环境
2.1、配置gcc和g++

这部分直接用百问网提供的交叉编译工具就可以啦,这是我的路径:

2.2、配置qmake

这部分就是一部分里的Buildroot交叉编译出来的qmake,在Buildroot目录下执行find . -name qmake找到这个文件然后配置到QT的编译工具链里即可。

2.3、配置构建工具链

这样交叉编译工具就配置完成了!

3、编写QT测试程序(一)

怎么创建QT程序就不用多说了吧!略..(不会自行度娘)

以上实现了一个简单的功能,当用户点击Button按钮时,Label控件里的文本变为hello world,编译完直接运行一下,然后用鼠标点击Button,如下所示:

接下来我们需要让这个程序在开发板上运行,需要采用100ask_imx6ull配置的交叉编译工具链来编译:

然后重新编译一下,注意,这个程序是不能直接在PC端运行的,这能在百问网的imx6ull开发板上运行。

由于我的笔记本电脑没有网口,所以目前只能通过SD卡的方式将交叉编译的程序拷贝到开发板上。

接下来操作开发板端,在串口终端将插入的SD卡进行挂载到/mnt目录下,然后在开发板端将其拷到/home/myir目录下:

接下来切换到/etc/init.d/

以下这一些是TSLIB环境变量以及QT应用程序环境变量,如果没有的话,则程序不能正常触摸或者不能正常显示:

将默认的运行程序直接注释掉:

然后保存完切换到/etc目录下,打开vim profile:

将刚刚注释的那部分放到这个文件的末尾:

然后保存后reboot重新启动开发板,切换到cd /home/myir:

执行test_qt:

触摸Button以后:

如果想要程序开机就直接运行,则需要在脚本里让环境变量生效之后,再执行qt程序,以下是我添加的一个启动脚本S85qt.sh:

代码语言:javascript
复制
#!/bin/sh

start() {
        echo 4 > /sys/class/backlight/backlight/brightness
        source /etc/profile
        /home/myir/test_qt  &
}

stop() {
        exit 1
}
case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        *)
                echo "Usage: $0 {start| stop|restart}"
                exit 1
esac

exit $?

这样的话重新开机以后我们的app就可以直接启动了!

4、编写QT测试程序(二)

接下来我们来使用QT控件控制屏幕背光亮度,背光亮度的操作,只需要往下面这个文件里写具体范围的数值就可以控制背光亮度了:

代码语言:javascript
复制
/sys/class/backlight/backlight/brightness

这个在百问的文档里也有描述:

在原来的QT上添加一个滑动条控件:

然后编写QT程序:

代码如下:

代码语言:javascript
复制
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->move(0,0);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    ui->label->setText("Hello World");
}

void MainWindow::on_horizontalSlider_valueChanged(int value)
{
    qDebug() << value ;
    int backlight = value / 12;
    ui->label->setText(QString("backlight:%1").arg(backlight));
    QString str = QString("echo %1 > /sys/class/backlight/backlight/brightness").arg(backlight);
    QByteArray ba = str.toLatin1();
    qDebug() << ba ;
    ::system(ba);
}

将该程序进行交叉编译,然后拷贝到开发板下,覆盖原来的test_qt,运行效果如下:

关于QT的学习深入,最近正点原子发布了他们的QT教程,各位有兴趣可以去正点原子的官网下载学习或者后台回复”QT教程“,即可获得以下文档!

QT项目实战与界面UI

1 车载音乐APP项目主界面

车载音乐APP主界面是我们一个UI主界面实战项目,教会大家如何搭建产品主界面APP,大家可以直接在此项目实战例程上开发自己的产品:

2 语音识别项目界面

目前智能AI音箱很火,本项目在正点原子开发板上结合百度云实现简单的语音识别项目:

3 智能家居物联网项目

  智能家居也是目前很火的一个方向,本项目结合原子云实现一个简单的智能家居控制中心,操作界面如下:

4 多媒体播放器

音乐播放器与视频播放器

教程目录

教程目录如下:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式云IOT技术圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、安装QT开发环境
  • 2、配置交叉编译环境
    • 2.1、配置gcc和g++
      • 2.2、配置qmake
        • 2.3、配置构建工具链
        • 3、编写QT测试程序(一)
        • 4、编写QT测试程序(二)
        相关产品与服务
        语音识别
        腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档