tft每日頭條

 > 科技

 > qt創建python項目

qt創建python項目

科技 更新时间:2024-12-12 20:49:40

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

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

實現思路

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

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

qt創建python項目(利用python自動生成qt工程文件)1

實現細節

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

qt創建python項目(利用python自動生成qt工程文件)2

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

qt創建python項目(利用python自動生成qt工程文件)3

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

qt創建python項目(利用python自動生成qt工程文件)4

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

qt創建python項目(利用python自動生成qt工程文件)5

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

qt創建python項目(利用python自動生成qt工程文件)6

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

qt創建python項目(利用python自動生成qt工程文件)7

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

qt創建python項目(利用python自動生成qt工程文件)8

集成工具

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

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

qt創建python項目(利用python自動生成qt工程文件)9

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

qt創建python項目(利用python自動生成qt工程文件)10

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

qt創建python項目(利用python自動生成qt工程文件)11

使用方法

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

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

qt創建python項目(利用python自動生成qt工程文件)12

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

qt創建python項目(利用python自動生成qt工程文件)13

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

qt創建python項目(利用python自動生成qt工程文件)14

概括總結

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

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved