本帖最后由 qiao--- 于 2024-2-13 10:56 编辑
前言:
在上期测评我成功驱动了TFT_RGB屏幕,这一期测评我们就在上期测评的基础上移植QT,这样我们就可以简单的开发各种好看的GUI界面。我这一期我打算用buildroot构建Linux的QT环境,大家对QT感兴趣的可以看一下我之前测评的另一篇移植QT的文章,那一篇是使用编译QT然后传输到板子的方式来移植QT。
1.buildroot配置选择QT并编译
我们进入buildroot目录进行图形化配置QT
cd <SDK 目录>/sysdrv/source/buildroot/buildroot-2023.02.6/
make luckfox_pico_defconfig
make menuconfig
我们搜索一下QT5,并跳转到其位置
我们选中它,并进入配置一下QT,大家可以根据自己的情况自由配置QT,我的配置如下所示
配置好后保存配置,并在当前目录编译一下
make savedefconfig
make
这个过程需要持续一段时间,编译好后然后我们可以在output目录下看到一下编译结果
我进入SDK主目录下,编译出我们需要的文件系统格式
./build.sh rootfs
最终编译结果会输出到SDK的output目录下
我们将这个rootfs.img替换原来的那个烧录进系统就行了。
2.添加环境变量,并运行测试QT
我们进入系统的/usr/lib目录可以看到我们编译成功的QT库,如下
证明我们的根文件系统构建的没有错,我们接下来部署一下环境变量,方便我们的程序调用上面的库
vi /etc/profile
因为我的屏幕不是触摸屏,其实我只需要添加上面圈出的一部分就行了,如果大家的是触摸屏还需要添加上面的tslib部分的环境变量
现在我们的所有QT环境都已经部署好,我们运行一下QT自带的例子,效果如下
IMG_8470
3.显示电子时钟界面
我们进入QTcreator进行开发,大家对这个东西不了解的可以看一下我以前的测评。
我们将屏幕调整为我们屏幕的大小
构建一个UI
然后为这个UI添加上代码,如下:
#include "home.h"
#include "ui_home.h"
home::home(QWidget *parent)
: QWidget(parent)
, ui(new Ui::home)
{
ui->setupUi(this);
my_timer = new QTimer(this);
connect(my_timer,SIGNAL(timeout()),this,SLOT(slot_timeout()));
my_timer->start(1000);
/* 设置样式*/
QPalette pal = this->palette();
pal.setBrush(QPalette::Background,QBrush(QPixmap(":/png/背景.png")));
setPalette(pal);
ui->label_time1->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd ddd"));
ui->label_time2->setText(QTime::currentTime().toString("hh:mm"));
}
home::~home()
{
delete ui;
}
void home::slot_timeout(void){
/*获取时间*/
ui->label_time1->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd ddd"));
ui->label_time2->setText(QTime::currentTime().toString("hh:mm:ss"));
}
我们用交叉编译工具编译下移植到我们的板子上就行了。
给大家看看时钟的最后效果:
IMG_8473
总结:通过本期测评我能够成功的移植QT的开发环境,在此之后我们能够应用QT开出各种好看的GUI界面。