Qt-创建模块化.pri文件
文章目录
- 一、.pri文件的作用与基本结构
- 作用
- 基本结构
- 二、创建.pri文件
- 如何添加模块代码?
一、.pri文件的作用与基本结构
作用
在Qt开发中,.pri文件
(Project Include File)是一种配置包含文件
,用于模块化管理和复用项目配置
。以下是其核心要点:
模块化管理
:将项目中公共的配置、源文件路径、编译选项等抽取到.pri文件中,避免在多个.pro文件中重复编写相同内容。
提高可维护性
:通过分模块管理代码和配置,使项目结构清晰,便于团队协作和维护。
跨项目复用
:可将常用配置(如第三方库路径、编译宏等)封装到.pri文件中,供多个项目共享。
基本结构
.pri文
件的内容与.pro文件
类似,包含变量定义、路径配置、文件列表等。常见指令示例:
# 设置头文件路径
INCLUDEPATH += $$PWD/include# 添加源文件和头文件
SOURCES += $$PWD/src/file1.cpp \$$PWD/src/file2.cpp
HEADERS += $$PWD/include/file1.h \$$PWD/include/file2.h# 定义预处理宏
DEFINES += MY_DEFINE_MACRO# 配置Qt模块
QT += core gui# 添加库文件路径
LIBS += -L$$PWD/libs -lmylib
与.pro文件的区别:
二、创建.pri文件
这里以鼠标拖动无边框窗口为例:
创建头文件和源文件:mouse.h 和 mouse.cpp
mouse.h:
#ifndef MOUSE_H
#define MOUSE_H
#include <QWidget>
#include <QMouseEvent>
#include <QPoint>
QT_BEGIN_NAMESPACE
namespace Ui {
class MouseWidget;
}
QT_END_NAMESPACEclass MouseWidget : public QWidget
{Q_OBJECTpublic:MouseWidget(QWidget *parent = nullptr);
private:Ui::MouseWidget *ui;
protected:void mousePressEvent(QMouseEvent *event);void mouseMoveEvent(QMouseEvent *event);private:QPoint mOffset;//窗口移动,相对偏移位置
};
#endif // MOUSE_H
mouse.cpp
#include "mouse.h"
MouseWidget::MouseWidget(QWidget *parent): QWidget(parent)
{
}
//重写父类的虚函数
void MouseWidget::mousePressEvent(QMouseEvent *event)
{mOffset = event->globalPos() - this->pos();
}
void MouseWidget::mouseMoveEvent(QMouseEvent *event)
{this->move(event->globalPos() - mOffset);
}
如何添加模块代码?
1、直接将代码剪切到common文件夹下,然后选择添加现有文件:
2、直接在工程目录中创建:
3、检查.pri文件,查看模块代码是否创建成功:
common.pri代码:
在项目引入mouse.h头文件时可能会出现:Error while building/deploying project helloworld (kit: Desktop Qt 5.6.2 MinGW 32bit) When executing step "make"
,这可能是项目找不到自定义的模块代码导致的。
解决办法:记得检查自己的.pri代码中有没有,INCLUDEPATH += $$PWD 和 DEPENDPATH += $$PWD
,如果没有就手动添加,不然项目找不到自定义的模块代码。
INCLUDEPATH += $$PWD
DEPENDPATH += $$PWDHEADERS += \$$PWD/mouse.h
SOURCES += \$$PWD/mouse.cpp
创建成功就可以在项目中使用模块化代码了。