brokensword2018
V2EX  ›  Qt

请教 qt svg 打包后无法显示问题。

  •  
  •   brokensword2018 · Jul 23, 2024 · 1818 views
    This topic created in 666 days ago, the information mentioned may be changed or developed.

    使用 QIcon("test.svg")显示图标。 在自己机器上是可以正常显示的。打包后再其他机器上无法正常显示。已进行的操作。应该是有 svg 相关动态库没有正确加载,但是不清楚具体原因。

    • .pro 文件中 QT += svg
    • Qt6Svg.dll Qt6Svgd.dll 动态库文件
    • 执行文件 plugins 目录包含 ( imageformats iconengines ) QCoreApplication::addLibraryPath("./plugins)
    Supplement 1  ·  Jul 23, 2024
    破案了,打包没用 windeployqt 打包。手动拷贝动态库,Qt6Svg.dll 拷贝成 Arm 版本了,我应该用 mscv 版本。菜鸡的错误。
    7 replies    2024-07-23 17:54:59 +08:00
    NoOneNoBody
        1
    NoOneNoBody  
       Jul 23, 2024
    路径问题总是奇奇怪怪的,不仅限于 qt ,估计还和 workpath 有关,我建议是用 applicationDirPath() 和相对路径计算出绝对路径再动态加载,这样才能确保是 app 所在目录的“相对路径”
    brokensword2018
        2
    brokensword2018  
    OP
       Jul 23, 2024
    @NoOneNoBody 也试过 CoreApplication::addLibraryPath(applicationDirPath() + "/plugins"),也是不行。 打印看了 QCoreApplication::libraryPath 。 看是有 plugins 目录的。 动态加载是指手动加载吗。
    NoOneNoBody
        3
    NoOneNoBody  
       Jul 23, 2024
    我的意思是 test.svg 用 applicationDirPath()计算出来,不是单纯添加 library
    brokensword2018
        4
    brokensword2018  
    OP
       Jul 23, 2024
    @NoOneNoBody #3 目前 test.svg 是放在 qrc 里的。路径类似于:/icon/test.svg 这样。
    brokensword2018
        5
    brokensword2018  
    OP
       Jul 23, 2024
    @NoOneNoBody #3 QIcon(":/icon/test.svg") 这样使用的。
    Gavin999
        6
    Gavin999  
       Jul 23, 2024
    用 ICO 格式
    Skifary
        7
    Skifary  
       Jul 23, 2024
    svg 应该还需要 qt xml 的 dll ?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1002 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 22:11 · PVG 06:11 · LAX 15:11 · JFK 18:11
    ♥ Do have faith in what you're doing.