ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Qt 开发经验总结(转载)

2021-08-23 01:03:49  阅读:170  来源: 互联网

标签:头文件 Qt pro 编译 编译器 设置 转载 经验总结


当编译发现大量错误的时候,从第一个看起,一个一个的解决,不要急着去看下一个错误,往往后面的错误都是由于前面的错误引起的,第一个解决后很可能都解决了。

2,定时器是个好东西,学会好使用它,有时候用QTimer::singleShot可以解决意想不到的问题。

3,默认QtCreator是单线程编译,可能设计之初考虑到尽量不过多占用系统资源,而现在的电脑都是多核心的,默认msvc编译器是多线程编译的不需要手动设置,而对于其他编译器,需要手动设置才行。

  • 方法一:在每个项目的构建设置中(可以勾选一个shadow build的页面地方)的build步骤,make arguments增加一行 -j16 即可,此设置会保存在pro.user文件中,一旦删除就需要重新设置,不建议此方法;
  • 方法二:在构建套件的环境中增加,工具->选项->构建套件(kits)->选中一个构建套件->environment->右侧change按钮->打开的输入框中填入 MAKEFLAGS=-j4 , 这样就可以不用每次设置多线程编译,只要是应用该构件套件的项目都会加上这个编译参数;
  • 注意:-j后面接的是电脑的核心数,写多了不会有效果,要自己看下电脑的参数,或者填个-j4就行,毕竟现在电脑4核心应该是最基本的;
  • 大概从2019年开始的新版本的QtCreator默认已经会根据电脑的核心自动设置多线程编译,比如识别到你的电脑是16核心的就会默认设置-j16参数进行编译;

如果你想顺利用QtCreator部署安卓程序,首先你要在AndroidStudio 里面配置成功,把坑全部趟平。

很多时候找到Qt对应封装的方法后,记得多看看该函数的重载,多个参数的,你会发现不一样的世界,有时候会恍然大悟,原来Qt已经帮我们封装好了,比如QString、QColor的重载参数极其丰富。

可以在pro文件中写上标记版本号+ico图标(Qt5才支持),其实在windows上就是qmake的时候会自动将此信息转换成rc文件。

VERSION = 2021.10.25 RC_ICONS = main.ico

  • 管理员运行程序,限定在MSVC编译器。

QMAKE_LFLAGS += /MANIFESTUAC:"level='requireAdministrator' uiAccess='false'" #以管理员运行 QMAKE_LFLAGS += /SUBSYSTEM:WINDOWS,"5.01" #VS2013 在XP运行

 

运行文件附带调试输出窗口,这个非常有用,很多时候当我们发布程序阶段,我们会遇到程序双击无法运行也不报错提示(开发机器上一切正常),都不知道发生了什么,甚至任务管理器可以看到运行了但是没有界面弹出来,此时就需要在项目的pro文件中加上这个,带界面的程序也会自动弹出调试窗口打印输出信息,方便找问题,一般没法正常运行的程序都会打印一些提示信息缺啥之类的。

 

 

TEMPLATE    = app
MOC_DIR     = temp/moc
RCC_DIR     = temp/rcc
UI_DIR      = temp/ui
OBJECTS_DIR = temp/obj
#就是下面这行用来设置运行文件附带调试输出窗口
CONFIG      += console pro

 

绘制平铺背景QPainter::drawTiledPixmap,绘制圆角矩形QPainter::drawRoundedRect(),而不是QPainter::drawRoundRect();移除旧的样式

//移除原有样式
style()->unpolish(ui->btn);
//必须要有下面这行不然还是不会卸载
ui->btn->setStyleSheet("");
//重新设置新的该控件的样式。
style()->polish(ui->btn);获取类的属性

获取类的属性

const QMetaObject *metaobject = object->metaObject();
int count = metaobject->propertyCount();
for (int i = 0; i < count; ++i) {
    QMetaProperty metaproperty = metaobject->property(i);
    const char *name = metaproperty.name();
    QVariant value = object->property(name);
    qDebug() << name << value;
}

其他经验

  1. Qt界的中文乱码问题,版本众多导致的如何选择安装包问题,如何打包发布程序的问题,堪称Qt界的三座大山!

  2. 在Qt的学习过程中,学会查看对应类的头文件是一个好习惯,如果在该类的头文件没有找到对应的函数,可以去他的父类中找找,实在不行还有爷爷类,肯定能找到的。通过头文件你会发现很多函数接口其实Qt已经帮我们封装好了,有空还可以阅读下他的实现代码。

  3. Qt安装目录下的Examples目录下的例子,看完学完,月薪20K起步;Qt常用类的头文件的函数看完学完使用一遍并加以融会贯通,月薪30K起步。

  4. 如果出现崩溃和段错误,80%都是因为要么越界,要么未初始化,死扣这两点,80%的问题解决了。

  5. 关于qt版本:Qt和msvc编译器常见搭配是Qt5.7+VS2013、Qt5.9+VS2015、Qt5.12+VS2017,按照这些搭配来,基本上常用的模块都会有,比如webengine模块,如果选用的Qt5.12+msvc2015,则很可能官方没有编译这个模块,只是编译了Qt5.12+msvc2017的。切记:原配最好。最后的支持XP的版本5.7.0。不建议使用4.7以前和5.0到5.3之间的版本,太多bug和坑,稳定性和兼容性相比于之后的版本相当差。安装过程中,路径不要有空格和中文,最要用默认安装路径。

  6. 终极秘籍:如果遇到问题搜索Qt方面找不到答案,试着将关键字用JAVA C# android打头,你会发现别有一番天地,其他人很可能做过!

 转载自微信公众号:https://mp.weixin.qq.com/s?src=11&timestamp=1629559856&ver=3266&signature=DrM1KE9pSDCyUY4wBIM6uxpAf59qxEevIFcAOma0tFNfnutFiFMlSqsbHUZz*uuILeXW7Kqe8WOK6cfuUiz*BiBXodnwkDWF10dGpj12HPqQpnG25*157NUWmUA5tDVZ&new=1

标签:头文件,Qt,pro,编译,编译器,设置,转载,经验总结
来源: https://www.cnblogs.com/gethope5/p/15171044.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有