V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
brokensword2018
V2EX  ›  Qt

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

  •  
  •   brokensword2018 · 70 天前 · 728 次点击
    这是一个创建于 70 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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