首页 / 浏览问题 / 组件GIS / 问题详情
地图刷新特别慢
19EXP 2019年07月17日

使用 Extentions4Qt,地图刷新响应特别慢,且有大量如下输出信息:

QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted

需要怎么配置一下?

使用的是组件 iObjects C++ 9.1.1 Windows 版,Qt 4.8.7.

另外 iObjects C++ 9.1.1 的 API 文档在哪里可以找到?帮助下的 API 索引页是无法打开的。

1个回答

您好,使用release运行浏览地图,debug有时会很慢。C++直接看头文件,文件管理器Include搜索,API和头文件中的一样。
694EXP 2019年07月18日
多谢,测试了 release 版,相对流畅很多,但有时还是会有明显卡顿,同时伴随上面的日志输出,还有其他常用的优化措施吗?测试地图使用的是 sdk sample 中自带的全国地图。
其他没有什么特别的设置。你是用的示例还是自己实现的?

用的 GetStarted 这个示例,执行滑动鼠标滚轮放大操作,就会出现未响应以及上面的输出

jb.plot:	 0 
TY.plot:	 0 
MainWindow::setupUI 136 strJBLibPath: "V:\develop\supermap\supermap-iobjectscpp-9.1.1-16828-70590-win-all\bin\bin\Resource/plots/JB.plot" 
MainWindow::setupUI 138 nLibId: -1 
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
QWidget::repaint: Recursive repaint detected
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QWidget::repaint: Recursive repaint detected
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 1
QPainter::end: Painter not active, aborted

在Windows上我用的Qt版本都比较高,Qt 5.9, Qt 12的,没有这类日志。你也可参考一下我实现的,https://github.com/Jun0x01/JunSuCpp

之所以使用 Qt 4.8, 是因为 Linux 下不支持高版本 Qt5(之前答复的), 因为后面需要跨平台, 并且有看到 csdn 上 Windows 例子都是基于 4.8 vs2012 编译的.

Linux 下的 Qt5 支持大概需要到什么时候呢?
Windows上对Qt 版本高于 4.8就行,Linux目前只能使用4.8的库,Qt Creater可以使用高版本的嘛。

预计 10i 版本支持Qt5, 在9月底发布。
好的,多谢。

Qt Creator 用的是 4.9.2,版本已经很高了。

如果 9 月底可以发布的话,我就也可以先在 Windows 上用高版本 Qt,等发布新版本 sdk 后再做 Linux 的。
使用 Qt 5.6.3 MSVC2015, x86 下您的项目无法编译通过(库路径已经修正),请问有测试过 x86 的版本吗?

另外,看到您那边使用的 Qt 有不少版本是自己编译的,相对于官方发布的版本,有做什么改动吗?还是只是升级了编译器(vs2017)?

安装 VS2017,Qt 5.9.8 x64,打开 pro 文件仍然无法编译通过,pro 的配置是全的吗?

LINK : warning LNK4001: 未指定对象文件;已使用库
LINK : warning LNK4068: 未指定 /MACHINE;默认设置为 X64
LINK : error LNK2001: 无法解析的外部符号 _DllMainCRTStartup

看 README

* VS2017 + Qt5.2 及以上(Qt addin 2.3.2, 使用过的Qt有Qt5.2、Qt5.6.3、Qt5.9.3、Qt5.12

对比看 pro 文件相对 vs 工程配置不全。
您好,最近增加新功能确实没有配置x86的,以及没有更新Qt 工程。VS_QT的项目可以使用,Qt项目需要修改配置文件,以及VS_ x86的没有添加新的库文件,这些稍后会提交。

x64的VS中都可以用,前面你给的错误提示应该是环境配置问题。
您的例子确实流畅很多,没有发现卡顿的现象。
...