开发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文件还有很多待改进的地方,另外还需要考虑更多的场景,这些都有待于后续进一步优化,而文章主要提供解决问题的一种思路。

,