您当前的位置: 首页 > 

龚建波

暂无认证

  • 6浏览

    0关注

    313博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

《QDebug 2022年9月》

龚建波 发布时间:2022-09-27 12:58:21 ,浏览量:6

一、Qt Widgets 问题交流 二、Qt Quick 问题交流 1.ScrollView 关闭拖出边界时的回弹效果

Flickable 提供了 boundsBehavior 和 boundsMovement 可以控制一些拖动 content 时的效果,比如可以拖出边界然后有回弹的一个效果。ScrollView 似乎没有导出相关的属性,不过目前它的实现其实内部就是一个 Flickable,所以可以通过对象树找到这个 Flickable 设置相关属性。

    ScrollView {
        id: sv
        anchors.fill: parent
        ScrollBar.vertical.policy: (ta.contentHeight + ta.padding * 2 < sv.height)
                                   ? ScrollBar.AlwaysOff
                                   : ScrollBar.AlwaysOn
        ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
        TextArea {
            id: ta
            width: parent.width
            height: sv.contentHeight
        }
        Component.onCompleted: {
            if(sv.children.lengthplay();

Qt 源码里有句注释:Qt 多媒体后端无法直接播放 qrc 文件,如果对应的平台后端支持 StreamPlayback,会将为该资源传递 QFile,否则将数据复制到一个临时文件并传递其路径。

在调试时发现就是走的 QFile 直接读 qrc 而不是生成临时文件,但是可能内部逻辑有 BUG。最简单的解决方法:1,不把音视频放在 qrc,2,初始化时主动生成临时文件。

2.DLL 动态库中提供的单例包含 QNetworkAccessManager 成员时,没法正常释放

(测试环境 Win10 + MSVC2019 + Qt5.15.2 64bit)

类似的BUG:https://bugreports.qt.io/browse/QTBUG-82984

对于 DLL 中全局静态的 QNetworkAccessManager,delete 会被阻塞住,因为 static 生命周期比 main 函数中的 QApplication 长,所以此时 QApplication 已经被释放了。官方是不建议写 static QObject 对象的,但是有时有这方面的需求。

简单的解决方法:main 退出前主动 delete QNetworkAccessManager。

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MainWindow w;
    w.show();
    int ret = app.exec();
    //在这里释放static QObject
    return ret;
}
3.Visual Studio 使用 editorconfig 设置创建的文件编码为 utf-8 

VS 里创建的文件一般是根据 locale 来确定编码的,比如中文环境一般是 gb2312。VS 本身可以单个修改文件编码为 utf8,或者使用插件。目前版本的 VS 还支持 editorconfig 配置文件,相比插件更加灵活,且支持很多 IDE(Qt Creator 这个垃圾貌似还不支持,但是可以装对应的开源插件)。

VS文档:EditorConfig settings - Visual Studio (Windows) | Microsoft Learn 

官网:https://editorconfig.org/

#https://editorconfig.org/
root = true #所在目录是项目根目录,此目录及子目录下保存的文件都会生效

[*] #所有文件
indent_style = tab #缩进风格
tab_width = 4 #缩进宽度
charset = utf-8 #文件编码
end_of_line = crlf #行尾格式,win一般为CRLF,linux一般为LF
insert_final_newline = true #文件尾添加换行符,以防警告

 

取消 【遵循项目编码约定】会关闭 Visual Studio 的 EditorConfig 支持。

 

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

微信扫码登录

0.0344s