Qt开发经验小技巧201-205
- 编译生成debug版本动态库,文件末尾自动加上d结尾。
CONFIG(debug, debug|release) {
win32: TARGET = $$join(TARGET,,,d)
mac: TARGET = $$join(TARGET,,,_debug)
unix:!mac: TARGET = $$join(TARGET,,,d)
}
- QtCreator中pro项目文件格式说明。
| 名称 | 说明 |
|---|---|
| QT += core gui | 添加本项目中需要的模块,影响后面代码文件include的时候自动弹出下拉选择,如果pro文件没有引入该模块则无法自动语法提示,一般打包发布的时候对应动态库文件比如 Qt5Core.dll。 |
| TARGET = xxx | 生成最后目标文件的名字,可以是可执行文件或者库文件。 |
| TEMPLATE = app | 项目程序的生成模式,默认是app表示生成可执行文件程序,如果是动态库项目就是 TEMPLATE = lib。 |
| CONFIG += qaxcontainer | 引入一些配置,在Qt4的时候还用来引入一些模块,其中有部分改成了QT += 方式引入,比如Qt5引入本地activex控件支持改成了QT += qaxcontainer。 |
| DEFINES += xxx | 项目中自定义的一些定义,可以在代码文件中识别,通常用来定义一些不同平台的处理,根据项目需要自己定义任何标识。 |
| HEADERS += head.h | 项目中用到的头文件,一般拓展名是.h,可以写在一行也可以分行写,分行要用 \ 斜杠结束。 |
| SOURCES += main.cpp | 项目中用到的实现文件,一般拓展名是.cpp,可以写在一行也可以分行写,分行要用 \ 斜杠结束。 |
| FORMS += Form.ui | 项目中用到的UI文件,一般拓展名是.ui,可以写在一行也可以分行写,分行要用 \ 斜杠结束。 |
| RESOURCES += main.qrc | 项目中用到的资源文件,可以多个,写代码使用对应资源文件中的文件时候务必记得资源文件中的前缀。 |
| LIBS += -L$$PWD/ -lavformat -lavcodec | 项目中编译时候链接依赖的库,一般是 .lib .a .dylib 文件,可以写在一行,省略文件名的lib打头部分,也可以分多行绝对路径和全名称。 |
| DESTDIR += $$PWD/bin | 目标生成路径,$$PWD表示当前目录,一般建议生成的最终文件重定向到另外目录存放,好找,不然一堆临时文件在里面有时候文件太多好难找。 |
| INCLUDEPATH += $$PWD/include | 工程需要的头文件,指定整个目录,写代码的时候找到的话会自动下拉。 |
| DEPENDPATH += | 工程的依赖路径,用的比较少,一般涉及到引入链接库的时候可能需要。 |
| include($$PWD/3rd.pri) | 引入pri模块文件,pri最大的好处就是分目录管理文件,通用的轮子模块可以放到一个目录下,然后用pri统一管理,可以给多个项目公用。 |
官方详细地址https://doc.qt.io/qt-5/qmake-variable-reference.html
如果发现之前编译正常,突然之间再编译就一直死循环的样子,停留在一行提示并疯狂不停的打印,或者提示文件时间在未来,这说明你很可能改过开发环境的时间(比如测试某个授权文件失效),导致有修改过文件的保存时间在未来,你只需要将时间调整回来,将最后更新时间不正确的代码文件重新保存下就行。Qt的增量编译是根据文件的最后修改时间来判定的,最后的修改时间比上一次的修改时间还要新则认为该文件被修改过,需要重新编译该文件。
Qt的构建套件一般是在安装Qt开发环境的时候自动设置的,当然也可以手动设置,手动设置的时候千万要注意编译器和Qt库必须一致,否则该构建套件是有问题的,千万不能乱设置,尤其是对构建套件命名的时候最好标明qt版本和编译器版本,最好也要一致,不要说名称叫msvc而编译器选择的确是mingw,这样尽管能正常使用该构建套件,但是会造成一种误解,还以为该套件是msvc的,其实里面是mingw的。有个qter说他的qt坏了,死活编译失败,远程一看,尼玛,构建套件名称写的qt_msvc2019 编译器选择的msvc2015(他电脑只安装了vs2015),qt库选择的mingw!差点狂扇自己八个耳光,太离谱了!
当你编译Qt程序发现编译通不过提示报错,而且报错提示在Qt的头文件的时候,不要去尝试着修改Qt头文件来编译通过,那样没用的,你使用的Qt的库是已经根据原始的头文件编译好的。如果报错提示在编译生成的临时的moc等文件,你也不要尝试去修改他,那个是临时文件,这次你改好了也许编译通过了,你重新编一下又覆盖了还是旧的错误。总之你要从源头(你的代码)找问题。
Qt开发经验小技巧201-205的更多相关文章
- Qt开发经验小技巧81-90
Qt中的QColor对颜色封装的很完美,支持各种转换,比如rgb.hsb.cmy.hsl,对应的是toRgb.toHsv.toCmyk.toHsl,还支持透明度设置,颜色值还能转成16进制格式显示. ...
- Qt开发经验小技巧61-70
很多人问Qt嵌入式平台用哪个好,这里统一回答(当前时间节点2018年):imx6+335x比较稳定,性能高就用RK3288 RK3399,便宜的话就用全志H3,玩一玩可以用树莓派香橙派. 对于大段的注 ...
- Qt开发经验小技巧41-50
如果使用sqlite数据库不想产生数据库文件,可以创建内存数据库. QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); ...
- Qt开发经验小技巧71-80
在我们使用QList.QStringList.QByteArray等链表或者数组的过程中,如果只需要取值,而不是赋值,强烈建议使用 at() 取值而不是 [] 操作符,在官方书籍<C++ GUI ...
- Qt开发经验小技巧51-60
在某些http post数据的时候,如果采用的是&字符串连接的数据发送,中文解析乱码的话,需要将中文进行URL转码. QString content = "测试中文"; Q ...
- Qt开发经验小技巧31-40
代码判断MSVC编译器版本. if (_MSC_VER == 1800) MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015) MSVC++ 12.0 _ ...
- Qt开发经验小技巧21-30
如果出现Z-order assignment: is not a valid widget.错误提示,用记事本打开对应的ui文件,找到为空的地方,删除即可. 善于利用QComboBox的addItem ...
- Qt开发经验小技巧11-20
获取类的属性 const QMetaObject *metaobject = object->metaObject(); int count = metaobject->propertyC ...
- Qt开发经验小技巧1-10
当编译发现大量错误的时候,从第一个看起,一个一个的解决,不要急着去看下一个错误,往往后面的错误都是由于前面的错误引起的,第一个解决后很可能都解决了. 定时器是个好东西,学会好使用它,有时候用QTime ...
- Qt开发经验小技巧合集
一.开发经验总结 当编译发现大量错误的时候,从第一个看起,一个一个的解决,不要急着去看下一个错误,往往后面的错误都是由于前面的错误引起的,第一个解决后很可能都解决了. 定时器是个好东西,学会好使用它, ...
随机推荐
- Linux中ln 链接命令的用法
ln的语法 Usage: ln [OPTION]... [-T] TARGET LINK_NAME (1st form) or: ln [OPTION]... TARGET (2nd form) or ...
- FFmpeg开发笔记(五十七)使用Media3的Transformer加工视频文件
继音视频播放器ExoPlayer之后,谷歌又推出了音视频转换器Transformer,要在音视频加工领域施展拳脚.根据Android开发者官网介绍:Jetpack Media3是Android媒体库 ...
- 华为云云容器引擎CCE踩坑记
前几天把在公司办公区机房的一部分业务系统迁移至华为云,在华为云上现有的kubernetes集群(云容器引擎CCE)中创建了一个命名空间,并启用了命名空间的网络隔离功能,在该命名空间中创建了一些pod- ...
- 做PPT知识积累
很多技术人员鄙视PPT,他们觉得做PPT的人不干具体工作,只会把别人的劳动成果用PPT的形式变成自己的成果.这种想法有些酸,根源在于没有真正理解PPT的价值.工作中PPT的作用及其重要,也可以理解为梳 ...
- LeetCode题目练习记录 _数组和链表02 _20211008
LeetCode题目练习记录 _数组和链表02 _20211008 11. 盛最多水的容器 难度中等2834 给你 n 个非负整数 a1,a2,...,a``n,每个数代表坐标中的一个点 (i, ai ...
- WebService WCF 请求通道在等待 00:00:58.9616639 以后答复时超时。增加传递给请求调用的超时值,或者增加绑定上的 SendTimeout 值。分配给此操作的时间可能是更长超时的一部分。
查看使用什么方式调用的接口 如果是使用的 HttpWebRequest 请检查Timeout属性,默认值是 100,000 毫秒(100 秒)如果超过便会返回超时错误.
- IPC- J-STD-001J, J-STD-003D, J-STD-004D, J-STD-005B, IPC-2221C, IPC-6012F, IPC-A-610J ,
- OSG开发笔记(三十三):同时观察物体不同角度的多视图从相机技术
前言 前面的相机hud可以单独显示图形,继续深入研究相机hud,技术就是子视图了,实现该功能的直接技术是从相机技术. 本篇描述osg从相机技术 Demo 相机视口的关键调用 ...
- C# 高效餐饮管理系统设计与实现
前言 推荐一个C#开发全面.高效的商用餐饮管理系统.该系统集成了餐饮业日常运营所需的各种功能,包括但不限于订单管理.库存控制.财务结算等,通过信息技术手段,帮助餐饮企业实现管理的自动化和智能化. 系统 ...
- JVM的垃圾回收与内存分配
Java是一种内存动态分配和垃圾回收技术的一种语言,不需要显示的进行对象内存的分配,这一切操作都是由JVM来完成的,由于Java是"一切皆对象"的,所以对于内存分配的优化与速度非常 ...