目录
一、本文目的
本文目的是pro配置后,vs加载pro后的功能效果和QCreator相同
个人感觉QCreator写代码比较方便,vs是调试功能比较好。所以平时写代码的时候会用QCreator写,迫不得已的时候,才会用vs加载pro,去进行调试。
QCreator写代码的优点如下:
1 通过按钮右键菜单可以自动生成信号槽函数
2 编译运行的时候,输出窗口不会有和代码无关的警告
3 习惯用QCreator的人,写代码会更舒服
4 pro配置上 -- 通过pro单个文件去配置,一目了然,每一个新增的配置点可以清晰的看出具体是做什么的,比较简洁,默认的配置就不去写,可以明确的知道一个项目配置了什么,比较简洁。
对比vs的配置,界面东一块西一块的,影响观察,当然这样做的优点是把所有配置都暴露出来了,利于主动的去了解学习。(两种配置都熟悉了当然会更好,如果两种都熟练的情况下,pro配置少的优点就能体现出来了)
5 pro使用上 -- 创建一个新项目,如果想用老项目中的配置的话,可以直接从老的pro中复制粘贴过来
对比vs,就只能一项一项的去配置界面去修改了。旧项目中使用了哪些库,包含了哪些头文件,一个是不方便看,一个是不方便一次性的复制粘贴。(当然也有属性配置方式将库的配置写到一个文件中去保存下来,下次用的时候直接导入这个配置文件,但是也没有直接复制粘贴直观方便)
二、qt pro实战配置内容
下面的图片已经注释了每项配置的功能,vs导入如下配置也能自动地生成sln格式的qt项目
(还有其他没写的比如,动态库和静态库的引入,图标和exe信息的资源的引入,国际化ts的引入,网上自行搜索积累)
三、代码文本
#-------------------------------------------------
#
# Project created by QtCreator 2022-05-23T13:44:36
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = testPython
TEMPLATE = app
# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
CONFIG += c++11
#处理中文乱码问题
win32:msvc{
QMAKE_CXXFLAGS += /execution-charset:utf-8
}
#64位编译还是32位编译的判断
greaterThan(QT_MAJOR_VERSION,4){
TARGET_ARCH=$${QT_ARCH}
}else{
TARGET_ARCH=$${QMAKE_HOST.arch}
}
contains(TARGET_ARCH, x86_64){
message("64-bit")
BIN_DIR = bin64
DEBUG_DIR = debug64
THIRD_PARTY_DIR = thirdParty64
DEFINES += QMAKE_64BIT
}else{
message("32-bit")
BIN_DIR = bin32
DEBUG_DIR = debug32
THIRD_PARTY_DIR = thirdParty32
}
# release模式下可断点调试的设置
QMAKE_CXXFLAGS_RELEASE += -Zi
QMAKE_CXXFLAGS_RELEASE -= -O2 # 移除优化标志 -O2
QMAKE_CXXFLAGS_RELEASE -= -O1 # 移除优化标志 -O
QMAKE_LFLAGS_RELEASE += $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO
# 设置exe的输出目录,$$PWD就是pro的位置
# 有的地方不用$$PWD而用./是为了用相对路径,vs加载pro时会把$$PWD弄成绝对路径
win32 {
CONFIG(release, debug|release){
DESTDIR = ../$$BIN_DIR
}
else:CONFIG(debug, debug|release){
DESTDIR = ../$$DEBUG_DIR
}
}
# 设置一些乱七八糟的临时文件的输出目录
CONFIG(release, debug|release){
MOC_DIR = ../temp/$$TARGET/$$BIN_DIR/moc
RCC_DIR = ../temp/$$TARGET/$$BIN_DIR/rcc
UI_DIR = ../temp/$$TARGET/$$BIN_DIR/ui
OBJECTS_DIR = ../temp/$$TARGET/$$BIN_DIR/obj
}
else:CONFIG(debug, debug|release) {
MOC_DIR = ../temp/$$TARGET/$$DEBUG_DIR/moc
RCC_DIR = ../temp/$$TARGET/$$DEBUG_DIR/rcc
UI_DIR = ../temp/$$TARGET/$$DEBUG_DIR/ui
OBJECTS_DIR = ../temp/$$TARGET/$$DEBUG_DIR/obj
}
SOURCES += \
CommonFun/BaseFilePathManage.cpp \
CommonFun/pythonFun/PythonCInteraction.cpp \
CommonFun/pythonFun/PythonHeader.cpp \
PythonDebugger.cpp \
PythonJedi.cpp \
PythonQtTestDlg.cpp \
PythonQtTestDlg2.cpp \
PythonTestWgt.cpp \
main.cpp \
MainWindow.cpp
HEADERS += \
CommonFun/BaseFilePathManage.h \
CommonFun/pythonFun/PythonCInteraction.h \
CommonFun/pythonFun/PythonHeader.h \
MainWindow.h \
PythonDebugger.h \
PythonJedi.h \
PythonQtTestDlg.h \
PythonQtTestDlg2.h \
PythonTestWgt.h \
data/constData.h
FORMS += \
MainWindow.ui \
PythonJedi.ui \
PythonQtTestDlg.ui \
PythonQtTestDlg2.ui \
PythonTestWgt.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
win32: LIBS += -L$$PWD/../$$THIRD_PARTY_DIR/Python/libs -lpython39
INCLUDEPATH += $$PWD/../$$THIRD_PARTY_DIR/Python/include
DEPENDPATH += $$PWD/../$$THIRD_PARTY_DIR/Python/include
win32: LIBS += -L$$PWD/../$$THIRD_PARTY_DIR/PyRegistBaseCallBackDll/lib/ -lPyRegistBaseCallBackDll
INCLUDEPATH += $$PWD/../$$THIRD_PARTY_DIR/PyRegistCommonCallBackDll/include
INCLUDEPATH += $$PWD/../$$THIRD_PARTY_DIR/PyRegistBaseCallBackDll/include
DEPENDPATH += $$PWD/../$$THIRD_PARTY_DIR/PyRegistBaseCallBackDll/include
DISTFILES += \
../res/py/demo_chardet.py \
../res/py/demo_test.py \
../res/py/globalVar.py \
../res/py/pyCallDll.py \
../res/py/python_code_jedi.py \
../res/py/regist_c_fun.py \
../res/py/regist_c_fun2.py