您当前的位置: 首页 > 

龚建波

暂无认证

  • 2浏览

    0关注

    310博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

《QDebug 2021年12月》

龚建波 发布时间:2021-12-10 10:59:18 ,浏览量:2

一、Qt Widgets 问题交流 1.QOpenGLWidgets 窗口透明

参照 Qt 文档描述:https://doc.qt.io/qt-5/qopenglwidget.html

文档机翻:

将其他小部件放在下面并使 QOpenGLWidget 透明不会导致预期的结果:下面的小部件将不可见。这是因为实际上 QOpenGLWidget 是在所有其他常规的非 OpenGL 小部件之前绘制的,因此透视类型的解决方案是不可行的。其他类型的布局,例如在 QOpenGLWidget 顶部具有小部件,将按预期运行。

在绝对必要时,可以通过在QOpenGLWidget上设置Qt::WA_AlwaysStackOnTop属性来克服此限制。但是请注意,这会破坏堆叠顺序,例如,在 QOpenGLWidget 顶部不可能有其他小部件,因此只应在需要半透明 QOpenGLWidget 和下方可见其他小部件的情况下使用它。

请注意,当下面没有其他小部件并且打算拥有一个半透明窗口时,这不适用。在这种情况下,在顶级窗口上设置Qt::WA_TranslucentBackground的传统方法就足够了。请注意,如果透明区域被QOpenGLWidget唯一需要的话,那么Qt的:: WA_NoSystemBackground将需要转回false启用后的Qt :: WA_TranslucentBackground。此外,根据系统,也可能需要通过setFormat ()为 QOpenGLWidget 的上下文请求 alpha 通道。

默认状态下,QOpenGLWidget 窗口渲染透明时会显示为黑色。下图红色和蓝色为 QWidget 部件,分别置于底层和顶层,绿色三角为 QOpenGLWidget 部件。

 

给 QOpenGLWidget 设置 setAttribute(Qt::WA_AlwaysStackOnTop) 后,虽然透明有了,但是会浮在所有 QWidget 上层。即文档说的破坏了堆叠顺序。

 

顶层窗口设置 setAttribute(Qt::WA_TranslucentBackground) 后,虽然堆叠顺序有了,但是透明部分直接穿透了。

 

 目前没找到好的透明方案。

二、Qt Quick 问题交流 1.QML 文件有中文赋值,在使用该组件时显示 M300

如果在自定义的 QML 组件文件中对属性赋值中文字符串,那么可能会出现 M300 的警告,这样会影响到其他的智能提示。将 QML 文件编码从无 BOM UTF8 改为带 BOM UTF8 之后,Qt Creator 的 QML 编辑器就能正常解析不出现 M300 警告了。

在新出的 QtCreator 6 中,此问题以得到解决,不用设置 BOM 了。

  

2.部分基本类型作为 Qt 容器数据类型进行实例化后,不能在 QML 中识别

报错信息如下:

Error: Unknown method return type: QList

需要注册元对象类型:

qRegisterMetaType("QList");

此外,高版本对 c++ 类型的支持比低版本更好一点,比如上面的 QList ,在 Qt5.9.9 中打印如下: 

qml: object QVariant(QList)

而在 Qt5.15.2 中可以输出列表中的值:

qml: object [222]
3.QML 与 C++ 之间 int 和 qint64 的传递 

JS 的数值都是 number 双精度类型,传递给 C++ 函数的 int 和 int64 函数参数时,int 会向下取整,qint64 会四舍五入。

var a = 16777215
var b = 281474976710655
obj.testWirte(a, b)
obj.testWirte(a+0.8, b+0.8)
obj.testWirte(a+0.2, b+0.2)
obj.testWirte(a-0.8, b-0.8)
obj.testWirte(a-0.2, b-0.2)
CppObject::testWirte 16777215 281474976710655
CppObject::testWirte 16777215 281474976710655
CppObject::testWirte 16777215 281474976710656
CppObject::testWirte 16777215 281474976710655
CppObject::testWirte 16777214 281474976710654
CppObject::testWirte 16777214 281474976710655
三、其他 

1.

关注
打赏
1654961040
查看更多评论
立即登录/注册

微信扫码登录

0.0484s