前 言
本文主要說明Qt的圖形用戶界面(GUI)開發流程,包括Qt程序自啟動配置與案例介紹,旨在幫助開發者完成產品開發與測試。
開發環境
Windows開發環境:Windows10 64bit
Linux開發環境:VMware16.2.5、Ubuntu22.04.4 64bit
LinuxSDK開發包:LinuxSDK-[版本號](基于RK3506_LINUX6.1_SDK_Release_V1.1.0_20241128)
評估板系統版本:U-Boot-2017.09、Linux-6.1.99、Buildroot-2024.02
Qt版本:Qt-5.15.11
備注:本文基于256MByteNAND FLASH、256MByteDDR3配置核心板進行演示。
術語表
為便于閱讀,下表對文檔出現的關鍵術語進行解釋;對于廣泛認同釋義的術語,在此不做注釋。
Qt組件支持
Qt組件支持情況如下,詳情請查看產品資料“4-軟件資料LinuxFilesystembuildroot-feature-support”文件。
注意事項
本文檔默認使用HDMI顯示,使用USB TO UART0作為調試串口。
進行本文檔操作前,請先按照《開發環境搭建》文檔,安裝VMware虛擬機、Ubuntu系統、SecureCRT串口調試終端等相關軟件。
評估板簡介
創龍科技TL3506-EVM是一款基于瑞芯微RK3506J/RK3506B處理器設計的3核ARMCortex-A7+ ARM Cortex-M0國產工業評估板,主頻高達1.5GHz。評估板由核心板和評估底板組成,核心板CPU、ROM、RAM、電源、晶振等所有元器件均采用國產工業級方案,國產化率100%。同時,評估底板大部分元器件亦采用國產工業級方案,國產化率約為99%(按元器件數量占比,數據僅供參考)。核心板經過專業的PCB Layout和高低溫測試驗證,支持選配屏蔽罩,質量穩定可靠,可滿足各種工業應用環境要求。
評估板接口資源豐富,引出2路Ethernet、3路USB2.0、2路CAN-FD、RS485、RS232等通信接口,同時引出LVDS OUT、MIPI DSI、HDMI OUT、TFT LCD、HP OUT/MIC IN等音視頻多媒體接口。評估板板載WiFi模塊,支持選配4G模塊、PLP斷電保護模塊,并可選配外殼直接應用于工業現場,方便用戶快速進行產品方案評估與技術預研。
評估板硬件資源圖解1
評估板硬件資源圖解2
Qt開發說明
Qt開發環境主要包括Qt Creator工具、X86端Qt環境、ARM端Qt環境、交叉編譯工具鏈等。當用戶使用Qt Creator工具和X86端Qt環境編寫并編譯Qt工程后,生成的Qt程序鏡像僅可在X86端運行。必須使用適配評估板的ARM端Qt環境、交叉編譯工具鏈編譯Qt工程,生成的Qt程序鏡像方可在ARM端(即評估板)上正常運行。
LinuxSDK開發包中已提供適配評估板的ARM端Qt環境(5.15.11),請先參考《開發環境搭建》和《Linux系統開發手冊》安裝、編譯LinuxSDK,構建適配評估板的交叉編譯工具鏈和qmake工具。可基于命令行或Qt Creator工具對已有Qt工程進行編譯,生成ARM端Qt程序鏡像。
我司提供的Qt工程位于產品資料“4-軟件資料Demoqt-demos”目錄下,其中src目錄下包含Qt工程源碼,bin目錄下包含ARM端Qt程序鏡像。請將整個qt-demos文件夾拷貝至Ubuntu工作目錄下,如下圖所示。
圖 1
基于QtCreator開發
安裝QtCreator工具
Qt Creator是一款專為Qt框架設計的跨平臺集成開發環境(IDE),提供代碼編輯、調試、項目管理和界面設計等功能,支持高效開發Qt應用程序。
執行如下命令,安裝QtCreator。
Host# sudoaptinstallqtcreator
圖 2
圖 3
執行如下命令,查看QtCreator版本。
Host# qtcreator -version
圖 4
執行如下命令,加載環境變量。
Host# source /home/tronlong/RK3506/rk3506_linux6.1_release_v1.1.0/buildroot/output/rockchip_rk3506/host/environment-setup
圖 5
配置交叉編譯工具鏈
執行如下命令,啟動Qt Creator。
Host# qtcreator
圖 6
啟動Qt Creator工具后,點擊菜單欄"Tools->Options…"。
圖 7
點擊"Kits",打開配置選擇頁面。
圖 8
點擊"Compilers->Add->GCC->C++ ->Browse…",選擇平臺交叉編譯工具鏈中的arm-buildroot-linux-gnueabihf-g++,然后點擊Open確認。具體路徑為:
/home/tronlong/RK3506/rk3506_linux6.1_release_v1.1.0/buildroot/output/rockchip_rk3506/host/bin/arm-buildroot-linux-gnueabihf-g++
圖 9
圖 10
選擇后,Name修改為"RK3506-GCC",ABI選擇"arm-linux-generic-elf-32bit",再點擊Apply,如下圖所示。
圖 11
配置Qt Versions
點擊"Qt Versions->Add",選擇平臺qmake,然后點擊Open確認。具體路徑為:
/home/tronlong/RK3506/rk3506_linux6.1_release_v1.1.0/buildroot/output/rockchip_rk3506/host/bin/qmake
圖 12
圖 13
選擇后,Version name修改為"RK3506-qt5"再點擊Apply,如下圖所示。
圖 14
配置Kits
請參照下圖配置Kits各選項。點擊"Kits ->Add",將Name修改為"RK3506",Device type選擇"Generic Linux Device",Compiler的C++選擇"RK3506-GCC",Debugger選擇"None",Qtversion選擇"RK3506-qt5",點擊Apply,然后點擊OK完成配置。
圖 15
編譯Qt工程
本章節使用led_control案例演示編譯Qt工程。
請在QtCreator界面,點擊"Open"。
圖 16
選中Qt工程源碼目錄中.pro文件,點擊Open。
圖 17
勾選RK3506平臺Kits,點擊"Browse…"選擇Qt程序鏡像生成的路徑,選擇好后點擊"Open",如下圖所示。
圖 18
圖 19
點擊"Configure Project"進行工程配置,如下圖所示。
圖 20
右擊Qt工程,點擊Build進行Qt工程編譯,生成可在評估板上正常運行的ARM端Qt程序鏡像,如下圖所示。
圖 21
圖 22
編譯完成后,將生成可在評估板上運行的ARM端Qt程序鏡像,如下圖所示。
圖 23
基于命令行方式開發
本章節使用led_control案例進行演示。進入led_control工程源碼目錄,配置交叉編譯工具鏈環境變量,執行qmake命令生成Makefile文件,再執行make命令編譯生成可在評估板上正常運行的ARM端Qt程序鏡像,如下圖所示。
Host# cdqt-demos/image_display/src
Host# source /home/tronlong/RK3506/rk3506_linux6.1_release_v1.1.0/buildroot/output/rockchip_rk3506/host/environment-setup
Host# qmake
Host# make
圖 24
圖 25
圖 26
Qt程序自啟動說明
本章節以led_control案例為例,演示Qt程序自啟動功能。led_control案例主要實現圖形化界面控制LED燈亮滅的功能。
請將案例bin目錄下可執行程序led_control拷貝至評估板文件系統"/etc/init.d/"目錄。評估板上電啟動進入系統后,執行如下命令,賦予可執行程序權限。
Target# chmod a+x /etc/init.d/led_control
圖 27
圖 28
執行如下命令,新建一個開機自啟動腳本文件。
Target# vi/etc/init.d/S99led_control
圖 29
圖 30
開機自啟動腳本文件內容如下:
. /etc/profile
/etc/init.d/led_control &
添加內容后,請保存退出,執行如下命令修改開機自啟動腳本文件權限。
Target# chmoda+x/etc/init.d/S99led_control
Target# sync
圖 31
執行如下命令,移除LVGL程序腳本,關閉rk_demo桌面顯示程序。
Target# mv /etc/init.d/pre_init/S10lv_demo ~
圖 32
請將評估板斷電重啟,Qt程序將會自啟動。Qt程序運行成功后,可觀察到HDMI顯示屏顯示LED控制界面,可通過鼠標點擊界面控制LED。
圖 33
執行如下命令,取消led_control程序自啟動,并恢復rk_demo桌面顯示程序。
Target# mv /etc/init.d/S99led_control /etc/ //取消led_control程序自啟動
Target# mv S10lv_demo /etc/init.d/pre_init/ //恢復rk_demo桌面顯示程序
圖 34
image_display案例
案例說明
本案例基于Qt框架實現加載圖片文件并輸出至屏幕顯示的功能。
程序支持自動按比例縮放圖片,以確保圖片能夠完整地顯示;支持常規的PNG和JPG圖片格式。
圖 35
案例測試
評估板默認支持HDMI顯示,如需選用其他屏幕進行顯示,請參考《評估板測試手冊》中的“顯示模塊測試”章節完成硬件連接和替換對應的內核鏡像,并參考本文檔“觸摸屏Qt程序測試說明”章節進行案例測試。
請通過HDMI線將HDMI顯示屏與評估板HDMI OUT接口連接。進入評估板文件系統,將ARM端Qt程序鏡像拷貝至評估板文件系統任意目錄下,同時將image_display工程bin目錄下文件名為test.jpg的JPG格式圖片拷貝至相同路徑。請在Qt程序鏡像所在路徑下執行如下命令。
查看程序運行參數
Target# ./image_display
參數解釋
imagepath:圖片路徑。
rotation:該參數為1,則豎屏顯示。
圖 36
關閉rk_demo桌面
請執行以下命令關閉rk_demo,否則rk_demo將會覆蓋Qt程序。
Target# killall rk_demo
圖 37
橫屏顯示圖片
執行以下命令,顯示屏將顯示如下圖像,在調試串口終端按"Ctrl + C"或通過鼠標點擊屏幕"Exit"按鈕退出程序。
Target# ./image_display ./test.jpg
圖 38
圖 39
豎屏顯示圖片
執行如下命令,顯示屏將顯示如下圖像,在調試串口終端按"Ctrl + C"或通過鼠標點擊屏幕"Exit"按鈕退出程序。
Target# ./image_display test.jpg 1
圖 40
圖 41
關鍵代碼
生成Makefile文件。
圖 42
參數檢查。
圖 43
圖片加載。
圖 44
圖 45
窗口大小調整與圖片縮放。
圖 46
led_control案例
案例說明
本案例基于Qt開發框架實現通過顯示屏界面控制LED亮滅的功能。
程序默認全屏顯示。
圖 47
案例測試
評估板默認支持HDMI顯示,如需選用其他屏幕進行顯示,請參考《評估板測試手冊》中的“顯示模塊測試”章節完成硬件連接和替換對應的內核鏡像,并參考本文檔“觸摸屏Qt程序測試說明”章節進行案例測試。
請通過HDMI線將HDMI顯示屏與評估板HDMI OUT接口連接。進入評估板文件系統,將ARM端Qt程序鏡像拷貝至評估板文件系統任意目錄下,請在Qt程序鏡像所在路徑下執行以下命令。
請執行以下命令關閉rk_demo,否則rk_demo將會覆蓋Qt程序。
Target# killall rk_demo
圖 48
執行如下命令,可觀察到顯示屏顯示LED控制界面,可通過鼠標點擊界面控制LED亮滅,按"Ctrl + C"或通過鼠標點擊屏幕"Exit"按鈕退出程序。
Target# ./led_control
圖 49
用鼠標點擊屏幕的按鈕即可控制對應LED的亮滅。左上角的"Exit"按鈕可用于退出程序。
圖 50
關鍵代碼
生成Makefile文件。
圖 51
獲取主屏信息(分辨率),設置窗口大小。
圖 52
獲取LED當前亮滅狀態。
圖 53
設置LED亮滅。
圖 54
?
關注微信公眾號Tronlong創龍科技,可獲取更多更新的干貨。
審核編輯 黃宇
-
HDMI
+關注
關注
33文章
1822瀏覽量
154672 -
開發板
+關注
關注
25文章
5565瀏覽量
102764 -
GUI
+關注
關注
3文章
677瀏覽量
40816 -
開發者
+關注
關注
1文章
629瀏覽量
17396 -
RK3506
+關注
關注
0文章
27瀏覽量
69
發布評論請先 登錄
評論