引自免费微信小程序:皆我百晓生
您遇到了在使用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);
针对此问题,可尝试以下几种解决方案:
-
资源文件路径检查:
确认图片资源文件(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编译环境下,可执行文件能找到该图片。
-
资源文件编译配置:
确保在MSVC编译器设置中,资源文件(如.qrc
)已被正确包含并编译。在Qt项目 .pro
文件中,应有类似以下语句包含资源文件:
RESOURCES += icons.qrc
检查切换至MSVC编译器后,这些设置是否仍然有效。如果使用的是Qt Creator,可在“Projects”面板 -> “Build Settings” -> “Build Steps”中查看资源编译器(rcc.exe
)是否被正确调用。
-
主题支持差异:
QIcon::fromTheme()
方法尝试从当前系统或应用主题中加载图标。可能存在MinGW和MSVC编译的程序对主题支持的差异导致图标未能正确加载。首先确认tr("New")
对应的主题图标在目标系统上是否存在。如果仅依赖内置图片,可直接使用QPixmap
加载:
const QIcon NewFileIcon = QIcon(QPixmap(":/ToolBar/CreateFile.png").scaled(38,38));
-
编译选项与库兼容性:
确认MSVC编译器使用的Qt库版本与MinGW编译器使用的版本一致,且与项目代码兼容。不同Qt版本间可能存在API变化或已知问题,可能导致图片加载异常。确保MSVC编译环境下的Qt库安装完整且版本正确。
-
运行环境差异:
检查MSVC编译生成的程序在目标运行环境(操作系统、显示设置等)下能否正确加载和显示图片。可能存在特定环境因素影响了图片的显示,如DPI缩放、颜色管理等。尝试在多个不同环境中运行程序以排查此类问题。
通过以上步骤逐一排查,应该能定位并解决Qt在MSVC 2019编译器下图片无法显示的问题。如果问题依然存在,建议提供更多关于项目配置、编译日志及运行环境的具体信息,以便进一步分析。