1

如果这是在错误的部分,我深表歉意-根据需要移动...

一点背景知识:我有一个我构建的 Qt 4.8.4 应用程序,它运行得很漂亮……对我来说。我使用 VNC 连接到 Linux Redhat 盒子。

但是,当将应用程序提供给同事使用时,他无法在没有分段错误的情况下使其运行:基本上,他会尝试选中其中一个复选框,应用程序将出现分段错误并使用 gdb,回溯显示:

#0  0x00000000 in ?? ()
#1  0xb7a2b9e8 in QGtkStyle::drawComplexControl () from /usr/local/Trolltech/Qt-4.8.4/lib/libQtGui.so.4
#2  0xb7b315b5 in QScrollBar::paintEvent () from /usr/local/Trolltech/Qt-4.8.4/lib/libQtGui.so.4
#3  0xb7682fd4 in QWidget::event () from /usr/local/Trolltech/Qt-4.8.4/lib/libQtGui.so.4
...

需要注意的几点:

  1. 另一个用户:他和我在同一个 Linux Redhat 机器上,只是登录名不同。他的PATH, QTDIR, QTLIB, QTBIN, QTINC, &QTMAKESPEC和我一样。我们都在使用 bash shell。
  2. 我在我的应用程序中进行了一些调试,以比较 qt 已知的系统环境,它们是相同的(使用用户名/登录信息的执行)。

我一直在我的桌子上敲打我的头试图弄清楚这一点。

好吧,我决定随机做一些事情,然后我运行了已安装的 Qt Designer ......它无法启动。有趣的...

所以我做了一些调查,发现菜单中的Qt Designer是针对Qt-3.3的,也安装了。那,或者我读过的,不应该是一个问题。

然后,我尝试启动与 Qt 4.8.4 一起打包的 Qt Designer,但它也无法启动。如果我尝试从终端启动它,我会得到“Segmentation Fault”输出。(进一步调查显示 Qt 助手正在做同样的事情......)

通过 gdb 运行设计器(对于 qt 4.8.4),回溯显示:

#0  0x00000000 in ?? ()
#1  0xb6f049e8 in QGtkStyle::drawComplexControl() from /usr/local/Trolltech/Qt-4.8.4/lib/libQtGui.so.4
#2  0xb700a5b5 in QScrollBar::paintEvent() from /usr/local/Trolltech/Qt-4.8.4/lib/libQtGui.so.4
#3  0xb6b5bfd4 in QWidget::event () from /usr/local/Trolltech/Qt-4.8.4/lib/libQtGui.so.4

设计师的回溯与我的应用程序的回溯相同!

...而且我不知道这对我的应用程序/其他用户意味着什么。

我最初想重新安装 Qt,但如果它对我来说工作正常,那将如何解决问题?

4

1 回答 1

0

因此,对于遇到类似问题的任何人,我相信我已经找到了答案,至少在这种情况下:

在比较了我的主目录和其他用户的主目录后,我发现了两个最让我感兴趣的文件夹:

.config/
.qt/

事实证明,另一个用户丢失了 .qt 文件夹!在我的 .config 文件中,我有一个他没有的“Trolltech”文件夹。所以我把我的复制到他的,并在尝试再次运行之前注意到最后一件事......

在 .config/ 下,有一个文件名为Trolltech.conf- 猜猜看:他的和我的完全不同:我的 Trolltech.conf 文件没有设置 Qt 4.8.4 的所有内容。所以我也复制了。

瞧——Qt Designer(适用于 3.3 和 4.8.4)、Qt 助手和我的应用程序现在都运行良好。:D

于 2013-03-27T15:50:54.263 回答