利用python自動生成qt工程文件,支持任意移動文件

2020-11-06 技術分享realize

開發QT程序的時候,通常使用集成工具為QtCreator, 但是隨著工程越來越大,添加的文件越來越多,如果想要重新調整目錄結構,那就會很麻煩,特別是包含的頭文件中有相對的目錄。

為了解決Qt工程調整目錄難的文件,本文利用QtCreator支持調用python的功能來解決該問題, 接下來就來詳細說明解決問題的過程。

實現思路

使用過QtCreator工具的人,應該都會知道它使用的構建檔文件的後綴名為pro, 所以,本文將介紹如何編寫python文件來添加相關編譯信息到pro文件,而python文件的主要功能則是檢測工程目錄的文件,並將相關文件添加到pro文件中,最後再將python文件的運行命令集成到QtCreator工具。

python文件生成pro的流程如下圖所示,首先獲取pro文件路徑,先讀取pro文件中的固定配置信息,然後讀取所有依賴的文件路徑、頭文件、源文件和ui文件,最後將其重新添加到pro文件。

實現細節

實現獲取pro文件路徑的功能函數,其pro文件路徑是由外部參數傳遞過來,其獲取的方法為sys.argv[1]。

讀取pro文件中固定的配置數據,從pro文件的開頭開始讀起,當檢測到指定的字符串數據,則停止讀取,並返回獲取的配置數據。

查找依賴的文件路徑,一共支持三個參數,第一個參數rootdir,表示根目錄,即工程項目的頂層目錄,第二個參數proDir,表示pro文件所在目錄,第三個參數fileList是存儲獲取到的文件路徑列表。注意,rootdir參數當作是proDir即可,這裡做了區分,主要是考慮到根目錄與pro文件的目錄不在同一個目錄下而做了預留擴展。

查找文件路徑,一共支持四個參數,第一個和第二個參數與上面含義一樣,這裡不再說明,第三個參數fileList存儲查找到的文件列表,第四個參數fileFilter則指定查找的文件類型。

保存信息到文件,支持四個參數,第一個參數file是文件句柄,第二個參數tag代表關鍵字,第三個參數lines則是tag對應的值,第四個參數comment表示注釋,默認為空。

實現三個過濾文件類型的的函數,分別為ui文件、頭文件、源文件

最後組合上面所有的基本函數,創建python文件的主流程。

集成工具

現在將上面創建的python文件updatePro.py集成到QtCreator中。

首先點擊QtCreator的工具欄中的「工具」,然後依次選擇外部-> Configure。

彈出的對話框中,點擊左側導航欄的「環境」,再點擊右側窗口中的「外部工具」,然後在該界面下,點擊「添加工具」

接著按照下圖紅色箭頭指向的編輯框進行操作,注意執行檔則對應本機python的程序的路徑,如果沒有安裝python3,那麼需要先安裝python3。

使用方法

完成上面所有的步驟之後,下來就來說明使用方法。

首先pro文件中添加下圖紅色方框的信息。

然後點擊工具欄中的「工具」->」外部」, 再點擊updatePro。

最後自動生成的pro文件的格式內容如下圖所示,QMAKE_INCDIR表示依賴的文件路徑,FORMS表示ui文件,HEADERS表示文件列表,SOURCES表示源文件。

概括總結

本文詳細說明了利用python自動生成qt工程文件的過程,當移動文件,更改工程目錄,那麼只要重新執行python文件即可,但是該python文件還有很多待改進的地方,另外還需要考慮更多的場景,這些都有待於後續進一步優化,而文章主要提供解決問題的一種思路。

相關焦點

  • 自動化:利用python自動生成qt工程文件,支持任意移動文件
    開發QT程序的時候,通常使用集成工具為QtCreator, 但是隨著工程越來越大,添加的文件越來越多,如果想要重新調整目錄結構,那就會很麻煩,特別是包含的頭文件中有相對的目錄。為了解決Qt工程調整目錄難的文件,本文利用QtCreator支持調用python的功能來解決該問題, 接下來就來詳細說明解決問題的過程。
  • 解鎖新技能,python與cmake結合,實現自動生成工廠類
    有了上面的枚舉定義之後,現在就需要實現python文件,命名為JCmdFactory.cpp.py。實現功能函數之前,需要先實現兩個支持函數,用於後面函數的調用。第一個支持函數是get_cmd_id_enum_name_list,該函數的功能是從文件提取枚舉名稱列表。
  • 解鎖新技能,python與cmake結合,實現自動生成工廠類
    接下來就來說明如何利用python自動生成工廠類文件。一般一個文件通常包含了注釋說明、頭文件的聲明以及函數的實現。所以,就按照這三個步驟來實現自動生成工廠類的python文件。寫入注釋首先實現注釋說明的功能函數,該注釋主要提示使用者,文件是自動生成的,不能編輯和提交。
  • Python自動整理文件夾
    >今天閒來無事,發現文件夾比較亂,整理過程中突然想到可以利用python來自行處理,而且還可以通過聯繫熟練python,因此特地梳理了一遍python自動整理文件夾代碼,大家可以了解一下。以下是具體的代碼:&39;&39;&39;import osfrom os import path今天閒來無事,發現文件夾比較亂,整理過程中突然想到可以利用python來自行處理,而且還可以通過聯繫熟練python,因此特地梳理了一遍python自動整理文件夾代碼
  • 教你怎麼用 Python 自動整理文件
    不知道你是不是有過跟我一樣糟糕的體驗,不過,前段時間我用Python做了一個根據後綴名整理文件的工具,先來看看效果:自動整理前:自動整理後:效果非常好,舒服多了如果你想要直接下載原始碼試試看,請在公眾號後臺回復文件自動整理獲得原始碼下載地址。
  • 利用python自動生成證件照
    這個需要給它註明安裝的路徑,或者可以直接使用映像文件進行處理。我用了清華的但是也不行,就換了一個豆瓣的,結果是肯定的(不然我還敢在這裡沙雕?)。pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com --target=d:\python\python37\lib\site-packages Image
  • pdfkit | 利用python實現html文件轉pdf
    生成pdf文件。其實也有很多軟體提供pdf生成服務,但這樣太不python了,那下面就來試試pdfkit怎麼用吧!三步實現自動生成pdf文檔:1.使用pip安裝pdfkit庫python版本 3.x,在命令行輸入:pip install pdfkit
  • 雲計算Python自動化:python文件類型講解
    這正是Python語言的特性,Python的文件通過python.exe和pythonw.exe解釋運行。python常用的有3種文件類型:1. 原始碼 py2. 字節代碼 pyc3.優化代碼 pyo原始碼:python原始碼的文件以」py"為擴展名,由python程序解釋,不需要編譯字節代碼:python源文件經編譯後生成的擴展名為"pyc"的文件,用於隱藏代碼,提高加載速度編譯方法:生成單個pyc文件:方法1:代碼方式#vim compile.py
  • Python生成桌面文件,並添加數據(應用於數據的下載等等)
    python生成txt文件,並添加內容def text_create(name, msg): #自動獲取桌面路徑 desktop_path = os.path.join(os.path.expanduser('~'),"Desktop/") full_path = desktop_path + name + '.txt' # 也可以創建一個.doc的word文檔 file
  • QT實現客服端和伺服器之間消息和文件交互
    Qt的開發環境搭建(1)下載Qt開發集成環境,解壓並進入該目錄下;$ tar zxvf qt-everywhere-opensource-src-5.6.1.tar.gz$ cd qt-everywhere-opensource-src
  • Python文件.py轉換為.exe可執行程序,製作.exe文件圖標
    假如是專業的人士看你的代碼,一眼就能看懂你的代碼,而其實我們可以不需要給代碼,利用pyinstaller直接將你的Python程序打包成.exe文件格式,發給別人進行展示時,別人就會就像安裝一個軟體一樣,直接點擊exe文件就可以運行,完全封裝好,別人看不到你的代碼,你也再也不用一個一個得進行運行展示了,直接丟你已經打包好了的.exe
  • 如何在Visual Studio創建python文件並運行
    >技術python在Visual Studio開發工具中,創建python項目,根據項目的需要,新建不同的python文件;然後選擇python文件,進行運行。下面利用實例說明:操作步驟:1、打開Visual Studio工具,創建python應用程式
  • python中文件夾的操作
    文件有兩個關鍵屬性:路徑和文件名。路徑指明了文件在磁碟上的位置。例如,我的python安裝在路徑'C:\bianheng',在這個文件夾下可以找到python.exe 文件,運行可以打開python的交互界面。文件名原點的後面部分被稱為擴展名(或後綴),它指明了文件的類型路徑中的'C:\稱為「根文件夾」,它是包含了本分區內所有其他文件和文件夾。
  • Qt壓縮文件及文件夾
    Qt壓縮文件夾比較麻煩,需要編譯調用外部庫;我的環境是 windows64 + Qt5.14 - mingw;第一步: 編譯zlib1)zlib源碼下載 http://www.zlib.net/2)解壓下載的zlib壓縮包
  • QT下打開任意格式的文件源碼
    QT下學開發之基礎開發第一講,如何在QT下寫打開任意格式的文件源碼我想要實現這樣一個功能:打開電腦中doc文件,或者打開S19文件,或者打開excel表格,我該怎麼實現呢?這次課程程式設計師小白學開發就來為大家講解一下吧。
  • 摘要:使用webstorm自動編譯scss文件,並對生成的css文件自動添加...
    使用webstorm自動編譯scss文件,並對生成的css文件自動添加瀏覽器支持前綴css書寫div {  display: flex;  animation: all 1s linear;}自動添加css3前綴後div {  display: -webkit-box;  display: -
  • 1.1安裝Qt
    打開你的工程文件夾,這時會生成2個文件夾build-MyFirstWidget-Desktop_Qt_5_14_1_MinGW_64_bit-Debug和MyFirstWidget1.1.4.1 build-MyFirstWidget-Desktop_Qt_5_14_1_MinGW_64_
  • Qt 6 for Python 發布
    主要更新包括: 支持 Python 3.9,並將最低支持版本提高到 3.6。 在代碼庫中執行「Python 2 exorcism」,刪除了該語言不推薦使用的版本。 用戶可以使用 Python 語言的一些出色功能,例如 f-strings,數字文字下劃線,變量注釋語法等。
  • python生成詞雲時,文件名與庫名重出現的錯誤提示
    近日在vs code做一個python詞雲的練習時,編譯時出現:AttributeError: module 'wordcloud' has no attribute 'WordCloud'的提示,python3.8環境下,已經安排wordcloud
  • Qt使用C/C++擴展Python內置模塊
    調用形式如下:import libpy3extendlibpy3extend.extend_add(1,99)ibpy3extend.extend_str()先使用Qt建一個生成庫的工程,之後按照步驟進行操作即可。