@[toc]html
Qt 是一個跨平臺的應用程序開發框架。使用Qt開發的應用程序,只須要編寫一套代碼,而後把這套代碼放在不一樣平臺的Qt環境去編譯,就會生成能夠運行在對應平臺的應用程序。例如,我在Windows寫了一個串口助手,這套代碼不用修改,放在Linux環境下的Qt開發環境,從新編譯,就能夠生成能夠在Linux環境下運行的串口助手,固然,Qt支持的環境有不少。不一樣平臺下的移植,只須要修改很小一部分或者不用修改就能夠直接運行。 嵌入式Qt,即QtE,屬於Qt Embedded Linux 分支平臺。Qt/E 所面對的硬件平臺較多,當開發人員須要在某硬件平臺上移植 Qt/E 時,須要下載Qt 源代碼,利用交叉編譯器編譯出 Qt 庫。接着須要將 Qt 庫複製兩份,一份放置在開發主機上,供編譯使用;一份放在目標板上,供運行時動態加載使用。 linux
要想在開發板上運行Qt程序,首先板子上要有Qt的庫,並且要肯定這個的庫的版本。那麼怎麼看 開發板上的Qt庫是Qt-4.7.3版本的。可使用find
搜索命令,搜索本地全部Qt相關的文件:shell
#進入到根目錄 cd / #搜索qt相關的文件 find -name "*Qt*" #或者 find -name "*qt*"
若是搜索結果有不少so類型的文件,說明這個開發板上的系統是支持Qt的,並且後面的數字就是當前Qt庫的版本號。 能夠看出,iMX287A開發板支持Qt,庫的版本是4.7.3。vim
又是"Hello World",不管學習什麼東西,都要先來個"Hello World",固然Qt也不例外。bash
搭建一個最基本的Qt環境,須要兩個東西:qmake和編譯器。編譯器用的是交叉編譯器,咱們在第一節的教程中,已經介紹了,而且已經把交叉編譯器的路徑添加到了環境變量。下面咱們就來安裝用來開發嵌入式程序的qmake。服務器
qmake包工具在光盤的位置:三、Linux\二、工具軟件\Linux 工具軟件\qt4.7.3.tar.bz2
app
#進入到opt目錄 cd /opt #解壓qmake套件,Qt-4.7.3.tar.bz2 sudo tar -jxvf qt4.7.3.tar.bz2 #添加到用戶環境變量 sudo vim ~/.bashrc #文件末尾添加一行,$PATH放在後面,表示路徑添加在環境變量最前面 export PATH=/opt/qt4.7.3/bin/:$PATH #使設置的環境變量生效 source ~/.bashrc #查看當前的PATH路徑 echo $PATH #查看當前Qt版本 qmake -v
若是本機有多個qmake,那麼必定要把嵌入式qmake路徑添加到環境變量最前面,不然不能識別 若是輸出了Qt的版本,而且所在路徑是咱們設置的,說明Qt環境搭建成功。框架
咱們來編寫一個簡單的界面,程序只顯示一個標籤,標籤的內容是「Hello World」。在PC上交叉編譯以後,把可執行文件傳輸到開發板上運行。less
#新建一個文件夾存放qt工程 mkdir hello_qt #新建cpp文件 touch hello_qt.cpp #編輯hello_qt文件 vim hello_qt.cpp
hello_qt.cpp文件的內容:工具
//Qt圖形庫 #include <QtGui> int main(int argc, char *argv[]) { QApplication app(argc,argv); //新建一個標籤 QLabel label(QString("hello qt")); label.show(); app.exec(); }
程序很簡單,就是新建了個標籤,文本內容是"hello qt",而後讓這個標籤show出來。下面開始編譯,生成可執行文件:
#生成.pro文件 qmake -project #生成Makefile文件 qmake #編譯生成可執行文件 make
這樣,就生成了hello_qt的可執行文件,可使用file命令看一下文件類型: 支持ARM平臺運行的Qt程序。
經過scp傳輸,NFS共享的方式把這個文件在開發板上運行: 在開發板上運行: 實際效果:
Qt 是一個跨平臺的圖形框架,在安裝了桌面版本的 Qt SDK 的狀況下,用戶能夠先在PC 主機上進行 Qt 應用程序的開發調試,待應用程序基本成型後,再將其移植到目標板上。
桌面版本的 Qt SDK 主要包括如下兩個部分:
因爲iMX287A官方系統內的Qt庫是Qt-4.7.3版本的庫,因此咱們也要在桌面Linux安裝Qt4版本。官方的下載連接裏,只提供了Linux版本的Qt5,而若是想安裝Linux版本的Qt4,須要本身使用源碼進行編譯。這裏提供一個簡單的方法,那就是Ubuntu自帶的命令行apt-get
安裝功能,使用命令安裝Qt4版本。在使用前,請確保已經更換爲中國的服務器,不然下載速度會很慢。
#更新軟件列表 sudo apt-get update #安裝Qt4相關的全部軟件 sudo apt-get install qt4* #安裝QtCreator sudo apt-get install qtcreator
耐心等待一會就安裝好了,若是安裝過程當中提示缺乏某個庫,那就先apt-get安裝某個庫就能夠了。
打開工具->選項->構建和運行
菜單,添加嵌入式Qt的構建套件,默認桌面環境下的Qt4構建套件已經安裝好了。咱們只須要設置一下嵌入式環境下的Qt4構建套件
qmake路徑:/opt/qt4.7.3/bin/qmake #交叉編譯gcc路徑 /opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-fsl-linux-gnueabi-gccc #交叉編譯g++路徑 /opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-fsl-linux-gnueabi-g++ #交叉編譯gdb路徑 /opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-fsl-linux-gnueabi-gdb
而後在構建套件(Kit)
下新建一個構建套件
#名稱 imx287 #設備類型 一樣Linux設備 #C/C++編譯GDB 上一步設置的對應工具名稱
若是構建套件前面有紅色或黃色的感嘆號,說明構建套件沒有設置成功。
構建套件設置完成以後,嵌入式Qt程序的開發就和桌面Qt程序的開發同樣了:
使用scp或者NFS共享目錄的方式把文件傳輸到開發板: 在開發板運行使用Qt IDE生成的可執行文件:
實際運行效果:
若是想使用鼠標來操做,要在系統上電以前,就把鼠標插上,若是在運行過程當中鏈接鼠標是不能使用的。
#include <QDesktopWidget> ........... MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); //不顯示標題欄 this->setWindowFlags(Qt::FramelessWindowHint); // this->setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog); //獲取屏幕分辨率 const QRect availableSize = QApplication::desktop()->availableGeometry(this); qint16 width = availableSize.width(); qint16 height = availableSize.height(); qDebug() << "width: " << width << "height:" << height; //從新設置窗口充滿整個屏幕 this->resize(width, height); //設置窗口大小爲屏幕的1/3 // this->resize(width/3, height/3); //窗口位置移動到左上角 this->move(0, 0); }
個人公衆號:mcu149
原文出處:https://www.cnblogs.com/whik/p/12411794.html