首页| 论坛| 消息
主题:Qt开发经验小技巧216-220
liudianwu发表于 2022-05-21 09:20
命令行解压和删除目录。
- Qt的编译参数每个版本都可能有出入,毕竟一直在更新代码,甚至有些分类描述变了,比如之前-qt-xcb到了5.15改成了-xcb,之前-qt-sql-sqlite改成了-qt-sqlite,一定要看源码下的readme,里面约定了编译环境要求的最低版本,后面qt5开始具体的配置参数有哪些放到了qtbase目录下的config说明。
- 编译完成使用如果遇到提示 GL/gl.h 错误,需要安装 apt install libgl1-mesa-dev libglu1-mesa-dev或者 yum install mesa-libGL-devel mesa-libGLU-devel 。
- 编译参数说明可参考 [https://blog.csdn.net/xi_gua_gua/article/details/53413930](https://blog.csdn.net/xi_gua_gua/article/details/53413930)。
218. 在Qt中设置图片有时候会发现不成功,很可能是因为文件的拓展名不正确导致的,比如jpg的图片拓展名是png,bmp的图片拓展名改成了jpg,QImage、QPixmap传入文件路径加载图片,是通过拓展名去调用对应的图片解析算法,比较傻,但是速度快,不用经过分析具体内部是何种图片格式。如果想要不管拓展名都能保证加载成功,则必须读取图片文件数据加载的方式处理。
```cpp
//可以是资源文件中的图片也可以是本地文件
QString fileName = ":/test.png";
//此方式按照拓展名来区分具体格式不准确
//如果拓展名不正确就无法加载成功
ui->label->setPixmap(QPixmap(fileName));
//通过直接读取图片数据加载保证成功
QFile file(fileName);
file.open(QIODevice::ReadOnly);
QByteArray data = file.readAll();
//通过 QImage 处理
QImage img;
img.loadFromData(data);
//下面这种方式也行
//QImage img = QImage::fromData(data);
ui->label->setPixmap(QPixmap::fromImage(img));
//通过 QPixmap 处理
QPixmap pix;
pix.loadFromData(data);
ui->label->setPixmap(pix);
```
219. 总结几个Qt版本的冷知识。
- Qt4.8.7是Qt4的终结版本,是Qt4系列版本中最稳定最经典的(很多嵌入式板子还是用Qt4.8),其实该版本是和Qt5.5差不多时间发布的。参考链接 [https://www.qt.io/blog/2015/05/26/qt-4-8-7-released](https://www.qt.io/blog/2015/05/26/qt-4-8-7-released) [https://blog.qt.io/blog/2015/07/01/qt-5-5-released/](https://blog.qt.io/blog/2015/07/01/qt-5-5-released/)
- Qt5.6.3最最后支持xp系统的长期支持版本,Qt5.7.0是最后支持xp系统的非长期支持版本(有可能有极少数函数不支持,个人没遇到过)。
- Qt5.12.3是最后提供mysql数据库插件的版本,往后的版本需要自行编译对应的mysql数据库插件,官方安装包不再提供。
- Qt5.12.5是最后样式表性能最高的版本,经过酷码大佬查阅代码发现此后版本的样式表源码中为了修复一个bug做了循环嵌套设置,导致性能急剧下降,界面越多性能暴降10倍以上。
- Qt5.14.2是最后提供二进制安装包的版本,后面的版本都需要在线安装。
- Qt5.15系列是最后支持win7的版本,后面的Qt6系列版本需要更改源码编译才能支持win7,这对于小白来说难于上青天。
- Qt6.0/6.1版本其实也是支持win7的,但是因为缺失太多模块,而且BUG成山,大佬说了狗都不用,所以使用此版本没意义。
- Qt6不支持win7,是说开发阶段和运行阶段都不支持,无论开发阶段还是运行阶段你都需要Qt的库,只要是Qt的库不支持,到哪里也不支持。
- 新版的qtc7由于采用Qt6编译,所以也只能在win10及以上运行,意味着你要用新的qtc7+Qt5做开发也必须用win10及以上。
- 欢迎各位补充,比如哪个版本以后商用需要收费之类的,貌似用Qt4,在不更改Qt本身源码,动态库发布程序,法律风险小一些?
220. Qt官方除了Qt库一直在升级外,对应的集成开发环境也在更新升级,一般会选用最新的Qt库编译新版本,要注意的是,有些人安装的旧版本的qtc,加载比较高版本的Qt库,很容易出现报错提示 Project ERROR: Cannot run compiler 'g++'. Maybe you forgot to setup the environment? 之类的,一般是版本跨度过大,比如用Qt5.5附带的qtc加载Qt5.9的库,导致有些环境识别不到,可能是qtc在新版本中对某些识别处理规则有变动。所以一般建议可以用新的qtc加载旧的Qt库,不建议旧的qtc加载新的Qt库。
下一页上一页  (2/3)
回帖(0):

全部回帖(0)»
最新回帖
收藏本帖
发新帖