Qt 部署 - QGraphicsView 不显示在其他机器上

Posted

技术标签:

【中文标题】Qt 部署 - QGraphicsView 不显示在其他机器上【英文标题】:Qt Deployment - QGraphicsView not displaying on other machines 【发布时间】:2013-01-11 15:58:31 【问题描述】:

所以我一直在为我的公司使用 Qt 4.8.4(必需)制作程序。将项目部署到另一台机器时,程序运行良好(我包括 Qtgui4.dll 和 Qtcore4.dll)。但是,当尝试使用 QGraphicsView 查看打印预览图像时,没有其他机器会显示它。我什至尝试在另一台机器上安装 Qt 4.8.4 并在那里构建它无济于事。我使用 MSVC 编译并在新机器上安装了 Visual Studio。在将 .exe 部署到其他机器时,我还包括 imageformats 文件夹。

我在这里不知所措。我已经研究了几天。我不明白为什么它在我的机器上运行得很好,但即使我复制开发环境也不能在其他机器上运行。

我附上了一张实际工作的图片。

在所有其他机器上,预览图像显示为空白/白色。但是,我注意到图像已构建并且将打印。它只是不会预览。

我知道我没有包含任何代码,但我无法像我的公司那样包含很多代码。但我已经包含了与 QGraphicsView 相关的内容。

// Create a handle for the graphics view; fix bug where preview would disappear
// on first view; winId() creates the winId; Needed to initialize first
ui->graphicsView->winId();
/************************************/
if (preview)
    preview(ui->graphicsView->winId(), &err);

【问题讨论】:

您是否检查过 imageformats/ 中的 dll 是否真的被加载了? 我过去也遇到过类似的问题,因为 Qt 的部署版本禁用了 jpg 支持。您可以尝试使用 .png 或 .bmp 作为图像格式而不是 .jpg,或者检查部署 Qt 构建的“配置”参数以确保启用 jpg 支持。 我想我应该注意到我实际上并没有“部署”该项目。我只是将构建的项目转移到另一台机器上。此外,jpeg 正在工作。它将加载所有图像以打开它们并使用公司 SDK 创建图形。我遇到的唯一问题是 QGraphicsView。无论出于何种原因,即使在另一台计算机上安装了 Visual Studio 和 Qt,QGraphicsView 也不会显示图像预览。 另外,我已经运行了 Dependency Walker 来查看 .exe 目录中是否有任何 dll 不包含导致它无法工作。列出的仅有 Qtgui4.dll、Qtcore4.dll、msvcr90.dll 和 kernel32.dll。 Qt dll 在目录中,另外两个已经在机器上。 我已经使用 MinGW 重建了项目,结果相同。经过更多测试,预览版似乎可以在所有 Windows 7 机器上运行,但拒绝在 Windows XP 机器上运行。 Qt for Windows 7 是否存在库依赖关系?我不认为有,因为我可以在 XP 机器上编译项目。但话又说回来,我不知道为什么预览拒绝工作。我唯一能想到的是 winId() 返回不同的 ID。 【参考方案1】:

我没有找到解决方案。我完成了申请,规定操作系统不能是XP。

【讨论】:

以上是关于Qt 部署 - QGraphicsView 不显示在其他机器上的主要内容,如果未能解决你的问题,请参考以下文章

QGraphicsView 啥都不显示

Qt Embedded:使用 QGraphicsView 和 QGraphicsWidget 在两个屏幕上显示

Qt QGraphicsView 和 QGraphicScene 鼠标位置

在QT编程中,QGraphicsView是怎么显示出图片的

Qt - QGraphicsScene 和 QGraphicsView 不更新更改?

Qt:在 QGraphicsView/QGraphicsScene 上有一个孩子的 QWidget 不工作