在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    9097

    瀏覽量

    367560
  • 嵌入式
    +關注

    關注

    5082

    文章

    19126

    瀏覽量

    305201
  • Linux
    +關注

    關注

    87

    文章

    11304

    瀏覽量

    209502
  • 開發板
    +關注

    關注

    25

    文章

    5050

    瀏覽量

    97471
  • Qt
    Qt
    +關注

    關注

    1

    文章

    304

    瀏覽量

    37920
收藏 人收藏

    評論

    相關推薦

    嵌入式學習建議

    動手做一個實際的小系統,底層硬件基礎就有了。各個硬件模塊驅動程序編寫嵌入式系統的必備基礎。學習嵌入式系統的初期,這個過程是必須的。 ④
    發表于 10-22 11:41

    嵌入式開發常用軟件有哪些?

    的擴展程序商店安裝擴展以拓展軟件功能。 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

    米爾NXP i.MX 93開發板的Qt開發指南

    1.概述Qt是一跨平臺的圖形應用開發框架,被應用在不同尺寸設備和平臺上,同時提供不同版權版本供用戶選擇。米爾NXPi.MX93開發板(MYD-LMX9X開發板)使用Qt6.5版本進行
    的頭像 發表于 06-07 08:01 ?1741次閱讀
    米爾NXP i.MX 93開發板的<b class='flag-5'>Qt</b>開發指南

    嵌入式系統中集成Rust和Qt的實踐

    Rust 擁有豐富的庫生態系統,用于序列化和反序列化、異步操作、解析不安全輸入、線程、靜態分析等,而 Qt 是一 C++ 工具包,支持跨各種平臺的豐富的、基于 GUI 的應用程序,從 iOS 到
    發表于 05-03 10:26 ?1817次閱讀
    在<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 ?2536次閱讀
    <b class='flag-5'>Qt</b>上位機開發實戰案例

    3562-Qt工程編譯說明

    Qt 環境、交叉編譯 工具鏈等。當用戶使用 Qt Creator 工具和 X86 端 Qt 環境編寫編譯
    的頭像 發表于 03-05 09:19 ?479次閱讀
    3562-<b class='flag-5'>Qt</b>工程編譯說明

    嵌入式人工智能的就業方向有哪些?

    操作系統使用及C高級編程 數據結構與算法 二:嵌入式Linux應用工程師,Linux網絡開發工程師 文件IO 并發程序設計 項目實戰:基于Linux的Flappybird游戲開發 網絡編程開發及實戰上
    發表于 02-26 10:17

    Qt For OpenHarmony圖形化的進展突破

    Qt 適配 OpenHarmony 意義 Qt 是一 C++ 跨平臺開發框架,主要用于開發圖形用戶界面(Graphical User Interface,GUI)程序,具有跨平臺類庫
    的頭像 發表于 02-02 14:29 ?1510次閱讀
    <b class='flag-5'>Qt</b> For OpenHarmony圖形化的進展突破

    QT串口通信的簡單使用

    QT串口通信是上位機和下位機通信常用的通信方式, 也是學習QT必須學會的基礎知識, 這篇就簡單介紹一下QT串口通信的簡單使用.
    的頭像 發表于 01-15 09:27 ?2023次閱讀
    <b class='flag-5'>QT</b>串口通信的簡單使用
    主站蜘蛛池模板: 韩国在线免费视频| 97久久人人| 午夜视频在线观看一区| 1024国产欧美日韩精品| 一级片黄色免费| 久久久精品免费视频| 美女被日出白浆| 99精品热| 国产亚洲精品仙踪林在线播放| 美人岛福利| 在线观看黄色一级片| 精品色图| 人人干免费| aaaaaaa欧美黄色大片| 久久成人综合| 国产日日操| 亚洲成人高清在线观看| 国产三级精品视频| 99国产福利| 日韩一级欧美一级一级国产| 18女人毛片| 亚洲资源在线观看| 免费精品| 国产精品露脸脏话对白| 午夜色视频| 午夜在线观看视频在线播放版| 视频一区二区中文字幕| 尻老逼| 黄色网址视频在线播放| 午夜色站| 天天爽夜夜爽天天做夜夜做| 看黄视频免费| 国产高清美女一级a毛片| 欧美专区在线播放| 日本护士撒尿| 免费a级午夜绝情美女视频| 亚洲成a人片在线观看导航| 夜夜骑狠狠干| 第四色亚洲| bt天堂网在线www资源| 男女艹逼软件|