• 《QDebug 2022年11月》


    一、Qt Widgets 问题交流

    二、Qt Quick 问题交流

    1.QtQuick.Dialogs 1.x 中的 MessageDialog 触发两次 accepted 、rejected

    [QTBUG-94126] If inherit QApplication, the MessageDialog accepted signal is emitted twice. - Qt Bug Tracker

    当使用 QApplication 而不是 QGuiApplication 时,MessageDialog 的 accepted、rejected 信号会触发两次,一种替代方案是使用 Qt.labs.platform 模块的 MessageDialog。

    2.注册 QML 单例对象被 QML 引擎接管导致的释放问题

    单例实现使用 static 对象,很明显是不能对这个单例指针 delete 的

    1. AppManager *AppManager::getInstance()
    2. {
    3. static AppManager instance;
    4. return &instance;
    5. }

    注册单例时可以设置为 QQmlEngine::CppOwnership,避免被 QML 引擎释放

    1. qmlRegisterSingletonType<AppManager>(
    2. "Handy.Manager", 1, 0,
    3. "AppManager", [](QQmlEngine* qmlEngine, QJSEngine*){
    4. qmlEngine->setObjectOwnership(AppManager::getInstance(), QQmlEngine::CppOwnership);
    5. return AppManager::getInstance();
    6. });

    3.Qt5.15 启用 QSG_RHI,子窗口 Window 调用 close 可能会导致下次显示空白

    设置环境变量启用 QSG_RHI

    qputenv("QSG_RHI", "1");

    此时如果有 Window 类型的弹框,直接调用 close 或者点标题栏关闭,多点几次可能会触发异常,如果是 hide 似乎就能正常工作

    1. Window {
    2. width: 640
    3. height: 480
    4. visible: true
    5. title: qsTr("Main")
    6. Button {
    7. text: "open"
    8. onClicked: w2.show()
    9. }
    10. Window {
    11. id: w2
    12. width: 300
    13. height: 200
    14. title: qsTr("Sub")
    15. Button {
    16. anchors.centerIn: parent
    17. text: qsTr("hide")
    18. onClicked: w2.hide()
    19. }
    20. }
    21. }

    异常发生时会有提示,然后这个子窗口的内容就没法显示出来的,成了一个空白的窗口

    1. Failed to resize D3D11 swapchain: Error 0x80070005: ????????
    2. Failed to build or resize swapchain
    3. Failed to present: Error 0x887a0001: ??ó??????????????á???????????????????????????
    4. ???? D3D ????????????????????????????
    5. Failed to end frame

     

    三、其他

    1.Qt5 QMediaPlayer 的 duration 不能立即获取

    根据文档描述,Qt5 QMediaPlayer 的 duration 需要连接 durationChanged 信号来获取当前媒体的总时长。

    2.QMediaPlayer 编辑音频后再播放,可能还是播放的缓存的数据

    暂时没看到相应的接口,所以我先设置一个空的路径,再把原来的路径设置回去。

  • 相关阅读:
    镭速如何解决UDP传输不通的问题
    【网络知识必知必会】再谈Cookie和Session
    低压差线性稳压器MPQ2013A-AEC1品牌MPS国产替代
    mysql根据多字段分组——group by带两个或多个参数
    go map fatal errorconcurrent map read and map write
    【数据结构】栈
    【Java 进阶篇】JSP 内置对象详解
    HSV过滤灰色水印
    【C++】类
    原子性(juc编程)
  • 原文地址:https://blog.csdn.net/gongjianbo1992/article/details/128122854