嵌入式Qt-動手編寫并運行自己的第1個ARM-Qt程序

      網友投稿 979 2022-05-28

      上篇文章: 嵌入式Linux-Qt環境搭建介紹了如何搭建在Linux開發板中搭建Qt的運行環境,并測試了Qt自帶的例程。

      本篇,來介紹如何自己編寫一個Qt程序,并將編譯結果放到Linux開發板中運行。

      嵌入式Qt-動手編寫并運行自己的第1個ARM-Qt程序

      1 Windows上編寫Qt程序

      因為Qt是支持跨平臺的,所以我們可以先在Windows平臺上編寫和查看Qt的運行效果,然后再通過交叉編譯,編譯出ARM Linux平臺的可執行文件,最終放到開發板中查看運行結果。

      Windows上需要安裝Qt Creator軟件來開發Qt程序,該軟件的安裝過程,和大多數軟件的安裝過程都差不多,在此不再演示安裝過程。

      下面介紹如何創建一個Qt工程。

      1.1 新建Qt工程

      Qt Creator本質也是一個集成開發環境,與Visual Studio之類的創建工程的流程類似,其軟件界面如下:

      創建工程,選擇左上角菜單中的“文件”->"新建文件或項目",彈出如下窗口,然后默認選擇Qt Widgets Application,然后右下加點擊“Choose"按鍵:

      出現選擇項目工程的存放位置,然后再下一步:

      這里會用到Visual Studio中的一些功能,默認即可,然后下一步:

      然后要選擇類信息,基類里可選的有QMainWindow、QWidget和QDialog,這里我們選擇QWidget。

      下面還有一個”創建界面“的勾選框,那個是用來通過圖形化的方式設計顯示界面,本篇暫用不到,先取消勾選,然后點下一步

      到這里,Qt工程就創建好了,點完成:

      創建的Qt工程如下,主要包含4個文件:

      clock.pro:Qt工程的配置文件

      main.cpp:主程序

      widget.cpp:窗口程序

      widget.h:窗口程序的頭文件

      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平臺中編譯運行,查看效果:

      該時鐘是可以根據窗口大小的變化,自動進行放到或縮小顯示的:

      2 Ubuntu中交叉編譯Qt

      Windows中測試通過后,就需要編譯出能夠在ARM平臺運行的可執行程序了,這里需要在Ubuntu中進行編譯。

      2.1 復制源文件到Ubuntu中

      將Windows中的QT工程源碼,復制到Ubuntu中,注意.user文件是不需要的,這個是Windows平臺的編譯配置。

      復制到Ubuntu中的合適位置:

      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文件:

      然后執行make指令進行編譯:

      make

      編譯完可以看到可執行文件clock。

      我們可以再使用file命令查看該可執行文件的平臺信息:

      file clock

      可以看到該可執行文件是ARM平臺的。

      3 Linux開發板中運行Qt程序

      3.1 復制可執行文件到開發板中

      此次測試,仍然使用的是網絡位置掛載根文件系統的方式,通過如下指令將可執行文件復制到根文件系統中(開發板中):

      sudo cp clock ~/myTest/nfs/rootfs/myProj/qt/mytest/

      3.2 查看開發板中的運行效果

      然后就可以在開發板中執行該程序,查看效果了:

      ./clock

      運行效果如下:

      由于板子的網絡時間還不能正確獲取,這里顯示的時間其實是不對的,不過表針仍然會1秒1秒的走動。

      4 總結

      本篇詳細介紹了如何自己編寫一個Qt程序,如何通過交叉編譯,最終放到開發板中執行的過程。

      ARM Linux Qt 嵌入式

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Linux開發_網卡設置相關命令介紹
      下一篇:Java語言概述以及環境搭建丨【奔跑吧!JAVA】
      相關文章
      激情五月亚洲色图| 亚洲中文无码线在线观看| 中文字幕亚洲精品无码| 亚洲人成片在线观看| 亚洲一区二区在线视频| 亚洲成AV人片在线观看无码| 中文字幕在亚洲第一在线| 国产成人亚洲综合无码| 亚洲人成电影在线播放| 成人精品国产亚洲欧洲| 亚洲GV天堂无码男同在线观看| 亚洲AV无码专区国产乱码不卡| 久久亚洲中文无码咪咪爱| 久久亚洲精品11p| 亚洲国产成人久久一区久久| 亚洲成a人片在线观看老师| 亚洲国产高清精品线久久| 亚洲一区日韩高清中文字幕亚洲 | 亚洲一区二区三区久久| 亚洲精品国产第1页| 亚洲大尺码专区影院| 亚洲狠狠成人综合网| 亚洲国产成人久久精品大牛影视 | 伊人亚洲综合青草青草久热| 亚洲永久精品ww47| 久久久久亚洲精品成人网小说| 亚洲AV无码乱码在线观看牲色| 亚洲欧美精品午睡沙发| 狼人大香伊蕉国产WWW亚洲| 亚洲国产精品成人| 亚洲精品无码鲁网中文电影| 亚洲男人天堂av| 亚洲综合色7777情网站777| 亚洲变态另类一区二区三区| 日韩色日韩视频亚洲网站| 亚洲国产精品一区二区第一页免| 亚洲成人影院在线观看| 亚洲日韩精品射精日| 夜夜亚洲天天久久| 国产亚洲sss在线播放| 国产精品自拍亚洲|