努力学技术hhh 2024-04-08 11:22 采纳率: 42.9%
浏览 31
已结题

QT使用MSVC2019编译器遇到的问题

在使用Qt的MinGw编译器的时候,工具栏和按钮上的图片正常显示,当切换为MSVC2019编译器后图片不显示了

         const QIcon NewFileIcon = QIcon::fromTheme(tr("New"), QIcon(QPixmap("://ToolBar/CreateFile.png").scaled(38,38)));
        QAction *NewFileAct = new QAction(NewFileIcon, tr("&New"), this);
        NewFileAct->setShortcuts(QKeySequence::New);
        NewFileAct->setStatusTip(tr("New"));
        connect(NewFileAct, &QAction::triggered, this, &MainWindow::on_action_create_pro_triggered);
        fileToolBar->addAction(NewFileAct);

  • 写回答

10条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-08 11:22
    关注

    引自免费微信小程序:皆我百晓生

    您遇到了在使用Qt框架时,将编译器由MinGW切换至MSVC 2019后,工具栏与按钮上原本正常的图片不再显示的问题。具体代码片段如下:

    const QIcon NewFileIcon = QIcon::fromTheme(tr("New"), QIcon(QPixmap("://ToolBar/CreateFile.png").scaled(38,38)));
    QAction *NewFileAct = new QAction(NewFileIcon, tr("&New"), this);
    NewFileAct->setShortcuts(QKeySequence::New);
    NewFileAct->setStatusTip(tr("New"));
    connect(NewFileAct, &QAction::triggered, this, &MainWindow::on_action_create_pro_triggered);
    fileToolBar->addAction(NewFileAct);
    

    针对此问题,可尝试以下几种解决方案:

    1. 资源文件路径检查: 确认图片资源文件(CreateFile.png)在项目中的位置,并确保其在不同编译器环境下仍能被正确加载。在MSVC编译环境中,资源文件可能需要放置在特定目录或通过.qrc资源文件进行管理。检查并调整代码中资源路径,确保与实际文件位置匹配。

      建议修改

      • 如果图片已添加到.qrc资源文件中,使用:/前缀而非://访问资源。例如,若资源文件名为icons.qrc,且图片路径为ToolBar/CreateFile.png,则应改为:

        const QIcon NewFileIcon = QIcon::fromTheme(tr("New"), QIcon(QPixmap(":/ToolBar/CreateFile.png").scaled(38,38)));
        
      • 如果图片未加入.qrc,确保其相对于编译后可执行文件的相对路径正确。确保在MSVC编译环境下,可执行文件能找到该图片。

    2. 资源文件编译配置: 确保在MSVC编译器设置中,资源文件(如.qrc)已被正确包含并编译。在Qt项目 .pro 文件中,应有类似以下语句包含资源文件:

      RESOURCES += icons.qrc
      

      检查切换至MSVC编译器后,这些设置是否仍然有效。如果使用的是Qt Creator,可在“Projects”面板 -> “Build Settings” -> “Build Steps”中查看资源编译器(rcc.exe)是否被正确调用。

    3. 主题支持差异: QIcon::fromTheme() 方法尝试从当前系统或应用主题中加载图标。可能存在MinGW和MSVC编译的程序对主题支持的差异导致图标未能正确加载。首先确认tr("New")对应的主题图标在目标系统上是否存在。如果仅依赖内置图片,可直接使用QPixmap加载:

      const QIcon NewFileIcon = QIcon(QPixmap(":/ToolBar/CreateFile.png").scaled(38,38));
      
    4. 编译选项与库兼容性: 确认MSVC编译器使用的Qt库版本与MinGW编译器使用的版本一致,且与项目代码兼容。不同Qt版本间可能存在API变化或已知问题,可能导致图片加载异常。确保MSVC编译环境下的Qt库安装完整且版本正确。

    5. 运行环境差异: 检查MSVC编译生成的程序在目标运行环境(操作系统、显示设置等)下能否正确加载和显示图片。可能存在特定环境因素影响了图片的显示,如DPI缩放、颜色管理等。尝试在多个不同环境中运行程序以排查此类问题。

    通过以上步骤逐一排查,应该能定位并解决Qt在MSVC 2019编译器下图片无法显示的问题。如果问题依然存在,建议提供更多关于项目配置、编译日志及运行环境的具体信息,以便进一步分析。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(9条)

报告相同问题?

问题事件

  • 系统已结题 4月16日
  • 已采纳回答 4月8日
  • 创建了问题 4月8日

悬赏问题

  • ¥20 c语言写的8051单片机存储器mt29的模块程序
  • ¥60 求直线方程 使平面上n个点在直线同侧并且距离总和最小
  • ¥50 java算法,给定试题的难度数量(简单,普通,困难),和试题类型数量(单选,多选,判断),以及题库中各种类型的题有多少道,求能否随机抽题。
  • ¥50 rk3588板端推理
  • ¥250 opencv怎么去掉 数字0中间的斜杠。
  • ¥15 这种情况的伯德图和奈奎斯特曲线怎么分析?
  • ¥250 paddleocr带斜线的0很容易识别成9
  • ¥15 电子档案元素采集(tiff及PDF扫描图片)
  • ¥15 flink-sql-connector-rabbitmq使用
  • ¥15 zynq7015,PCIE读写延时偏大