计算机系统应用教程网站

网站首页 > 技术文章 正文

Qt/C++开发经验小技巧296-300 qt 5.9 c++开发指南 pdf

btikc 2024-10-27 08:40:07 技术文章 7 ℃ 0 评论

296. 使用QDir::setCurrent设置当前目录后,会影响程序中的所有相对目录的执行,导致可能的意外发生,一般相对目录都默认是可执行文件所在目录,所以如果程序中为了特殊处理临时调用了QDir::setCurrent设置过相对目录,建议处理完成以后立即切换回来。

```cpp

QDir::setCurrent("f:/");

QImage img(":/image/bg_novideo.png");

//结果图片保存在f:/1.jpg

img.save("1.jpg", "jpg");

img.save("./1.jpg", "jpg");

//下面是正确做法

//先记住之前的目录

QString path = QDir::currentPath();

QDir::setCurrent("f:/");

xxxxxxx执行任务

//重新设置回默认目录

QDir::setCurrent(path);

//结果图片保存在当前目录下

img.save("1.jpg", "jpg");

```

297. 大概从Qt6.4开始,如果项目中同时使用了QOpenGLWidget和QWebEngine浏览器控件,可能会出现QWebEngine加载网页黑屏的情况,6.4.3和6.5.3版本必现。根据官网的描述[https://doc.qt.io/qt-6/qquickwidget.html#graphics-api-support](https://doc.qt.io/qt-6/qquickwidget.html#graphics-api-support) ,你需要额外加一行代码。

```cpp

#include "qquickwindow.h"

int main(int argc, char *argv[])

{

QQuickWindow::setGraphicsApi(QSGRendererInterface::OpenGL);

QApplication a(argc, argv);

}

```

298. 现在现在新版的Qt都是需要在线下载,有时候下载到中途过程会遇到提示下载错误,很可能是部分插件模块对应服务器没有打包导致的,一般都是一些末尾带TP字样的模块,这些模块一般也不会用,所以如果想要安装成功,你需要到选择Qt版本和插件的地方,打开Additional Libraries节点,将那些用不上的尤其是TP结尾的都不勾选,再安装即可。

299. Qt中可以通过qputenv和qgetenv来设置和获取系统环境变量,既可以在代码中设置对应的值,也可以在系统环境变量中设置,比如windows系统环境变量中设置,相当于可以自定义字符串指定值,这样灵活性大大增强,有时候因为代码不能修改了,可以尝试去设置一个Qt认识的环境变量字符串值来产生效果。这里要特别提示的是,环境变量设置后一定要生效才能正常读取到,比如xp系统设置后可能要重启操作系统才能生效,还有一个是要重启QtCreator才能识别到最新的环境变量,可能是做了缓存机制。

```cpp

//设置每个窗口都有独立的句柄

QApplication a(argc, argv);

a.setAttribute(Qt::AA_NativeWindows);

//上面的方法是通过代码的方式设置/有时候已经是可执行文件/无法修改代码

//经过查阅代码得知会优先通过qgetenv读取是否有QT_USE_NATIVE_WINDOWS标志

//如果存在则按照QT_USE_NATIVE_WINDOWS变量的值进行赋值

//这种方法有个缺点/就是所有的Qt程序都会应用

```

300. 布局的setContentsMargins函数参数依次是左上右下,而qss中的margin依次是上右下左,很多人混搞混。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表