【Luckfox幸狐 RV1106 Linux 开发板】5-给系统移植QT环境__显示电子时钟界面
<div class='showpostmsg'> 本帖最后由 qiao--- 于 2024-2-13 10:56 编辑<p><span style="font-size:20px;">前言:</span></p>
<p>在上期测评我成功驱动了TFT_RGB屏幕,这一期测评我们就在上期测评的基础上移植QT,这样我们就可以简单的开发各种好看的GUI界面。我这一期我打算用buildroot构建Linux的QT环境,大家对QT感兴趣的可以看一下我之前测评的另一篇移植QT的文章,那一篇是使用编译QT然后传输到板子的方式来移植QT。</p>
<p> </p>
<p><strong><span style="font-size:22px;">1.buildroot配置选择QT并编译</span></strong></p>
<p>我们进入buildroot目录进行图形化配置QT</p>
<pre>
<code>cd <SDK 目录>/sysdrv/source/buildroot/buildroot-2023.02.6/
make luckfox_pico_defconfig
make menuconfig</code></pre>
<p>我们搜索一下QT5,并跳转到其位置</p>
<p> </p>
<p>我们选中它,并进入配置一下QT,大家可以根据自己的情况自由配置QT,我的配置如下所示</p>
<p> </p>
<p>配置好后保存配置,并在当前目录编译一下</p>
<pre>
<code>make savedefconfig
make</code></pre>
<p>这个过程需要持续一段时间,编译好后然后我们可以在output目录下看到一下编译结果</p>
<p> </p>
<p> </p>
<p>我进入SDK主目录下,编译出我们需要的文件系统格式</p>
<pre>
<code>./build.sh rootfs</code></pre>
<p>最终编译结果会输出到SDK的output目录下</p>
<p>我们将这个rootfs.img替换原来的那个烧录进系统就行了。</p>
<p> </p>
<p><strong><span style="font-size:22px;">2.添加环境变量,并运行测试QT</span></strong></p>
<p>我们进入系统的/usr/lib目录可以看到我们编译成功的QT库,如下</p>
<p> </p>
<p>证明我们的根文件系统构建的没有错,我们接下来部署一下环境变量,方便我们的程序调用上面的库</p>
<pre>
<code>vi /etc/profile</code></pre>
<p> </p>
<p>因为我的屏幕不是触摸屏,其实我只需要添加上面圈出的一部分就行了,如果大家的是触摸屏还需要添加上面的tslib部分的环境变量</p>
<p>现在我们的所有QT环境都已经部署好,我们运行一下QT自带的例子,效果如下</p>
<p>a9c9ec484ff51a50e0bff07060b9e7d8<br />
</p>
<p><strong><span style="font-size:22px;">3.显示电子时钟界面</span></strong></p>
<p>我们进入QTcreator进行开发,大家对这个东西不了解的可以看一下我以前的测评。</p>
<p>我们将屏幕调整为我们屏幕的大小</p>
<p> </p>
<p>构建一个UI</p>
<p> </p>
<p>然后为这个UI添加上代码,如下:</p>
<pre>
<code>#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"));
}
</code></pre>
<p>我们用交叉编译工具编译下移植到我们的板子上就行了。</p>
<p>给大家看看时钟的最后效果:</p>
<p>c70476d724def5d71be45880ebe5860f<br />
</p>
<p><span style="font-size:20px;">总结:</span>通过本期测评我能够成功的移植QT的开发环境,在此之后我们能够应用QT开出各种好看的GUI界面。</p>
<p> </p>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> 本帖最后由 qiao--- 于 2024-3-22 14:15 编辑
<p><!--StartFragment --></p>
<p>可能有的不熟悉 QT的贴友会不知道如何编译,我这里把编译步骤给补充出来。<br />
由于之前我的那个编译后的buildroot不见了,我这里又花了接近两个小时重新编译了一遍<img height="53" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/sad.gif" width="54" /></p>
<p>接一楼帖子编译后的buildroot那个地方开始讲。我们将buildroot编译好后在<SDK目录>/luckfox-pico/sysdrv/source/buildroot/buildroot-2023.02.6/output/build/qt5base-2ffb7ad8a1079a0444b9c72affe3d19b089b60de/qmake/qmake<br />
目录下会有qmake编译构建工具如下图所示</p>
<p> 我们可以在这个目录下看下qmake的版本</p>
<p> 有了qmake之后,我们就可以在我们的QT工程下构建Makefile文件了,然后使用make进行编译就可以了</p>
<p>记住在编译之前最好配置一下SDK的交叉编译环境</p>
<p>cd <SDK目录>/luckfox-pico/tools/linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf/<br />
source env_install_toolchain.sh</p>
<p>这里我将qmake导出置环境变量export PATH=$PATH:<SDK目录>/luckfox-pico/sysdrv/source/buildroot/buildroot-2023.02.6/output/build/qt5base-2ffb7ad8a1079a0444b9c72affe3d19b089b60de/qmake</p>
<p>我们以我之前的一个QT工程为例,在有.pro为后缀的文件夹下面输入qmake && make 就编译成功了</p>
<p> </p>
<p>最终会在当前目录下生成一个可执行文件,我们可以用file命令看看他是什么架构上的文件</p>
<p> </p>
<p> </p>
<p>常见问题:</p>
<p>用qmake && make出现下面情况</p>
<p> </p>
<p>这个原因是你在用buildroot配置QT5的时候没有选上widgets,配置时候勾选上就行了</p>
<p> </p>
<p> </p>
<p>非常感谢楼主分享的技术信息,楼主提供的技术资料声情并茂,非常实用</p>
chejm 发表于 2024-2-28 21:29
非常感谢楼主分享的技术信息,楼主提供的技术资料声情并茂,非常实用
<p>感谢支持</p>
<p>大佬如何交叉编译到RV1106里面,arm-rockchip830-linux-uclibcgnueabihf-gcc main.cpp -o main 报错,按照你这个帖子的话(https://bbs.eeworld.com.cn/thread-1267168-1-1.html),要怎么加进去,望指点。</p>
一荤一素 发表于 2024-3-22 10:39
大佬如何交叉编译到RV1106里面,arm-rockchip830-linux-uclibcgnueabihf-gcc main.cpp -o main 报错,按照 ...
<p>QT的工程是用makefile管理的,要用make进行编译,这里我下午依旧在这个帖子上会把编译的部分补充上来</p>
<div class="quote">
<blockquote><font size="2"><a href="forum.php?mod=redirect&goto=findpost&pid=3308813&ptid=1271835" target="_blank"><font color="#999999">一荤一素 发表于 2024-3-22 10:39</font></a></font> 大佬如何交叉编译到RV1106里面,arm-rockchip830-linux-uclibcgnueabihf-gcc main.cpp -o main 报错,按照 ...</blockquote>
</div>
<p> </p>
<p>楼主用心了。</p>
<p>只可惜rv1106没mipi dsi接口。</p>
<p> </p>
<p>要看看错误,如果找不到arm-rockchip830-linux-uclibcgnueabihf-gcc 就要把环境变量加到系统里面。或者用绝对路径。或者用makefile cmake 但都要让命令认得路径。</p>
本帖最后由 一荤一素 于 2024-3-25 09:56 编辑
<div class="quote">
<blockquote><font size="2"><a href="forum.php?mod=redirect&goto=findpost&pid=3308823&ptid=1271835" target="_blank"><font color="#999999">damiaa 发表于 2024-3-22 10:55</font></a></font> 楼主用心了。 只可惜rv1106没mipi dsi接口。 要看看错误,如果找不到arm-ro ...</blockquote>
</div>
<p>大佬真的牛</p>
一荤一素 发表于 2024-3-22 11:18
不是编译器的问题,我可以编译其它程序在开发板上运行,是对QT的不熟悉。
<p>如何交叉编译我已更新帖子,现在置顶为本帖的二楼,可以关注一下</p>
一荤一素 发表于 2024-3-22 11:18
damiaa 发表于 2024-3-22 10:55 楼主用心了。 只可惜rv1106没mipi dsi接口。 要看看错误, ...
<p>这里可以下各版本的QT http://download.qt.io/archive/qt/</p><br/> <p>你好,按照你的配置,我的应用到板子上什么字也不能显示。英文,汉字都不行。</p>
splendor 发表于 2024-5-22 13:56
你好,按照你的配置,我的应用到板子上什么字也不能显示。英文,汉字都不行。
<p>你配置应该是对的,字库没有可用内容,搞一个字体文件到字库目录下就行了</p><br/> <p>大佬我想配置buildroot 为qt4.8.6 ,该怎么操作啊?求教一下</p>
<p>感谢大佬,根据您的步骤一点点操作完美运行。膜拜,辛苦了</p>
jafatek 发表于 2024-6-21 09:57
感谢大佬,根据您的步骤一点点操作完美运行。膜拜,辛苦了
<p>感谢支持</p>
<p> </p>
<p>为什么这里选不了qt5,是需要下载源码嘛?</p>
羽落清泫 发表于 2024-8-16 17:31
为什么这里选不了qt5,是需要下载源码嘛?
<p>应该是依赖其他的模块,你可以看看依赖关系</p>
请问qt自带的例子是那个命令
页:
[1]