在Ubuntu下,Qt应用程序的外观很丑

3
我参与开发一些在Linux下构建的Qt应用程序。我首先在Windows 7下下载了源代码并进行了编译,但后来我决定在Ubuntu下工作。问题是,在Linux中,应用程序看起来像Win95时代的样子。我已经安装了Qt4设置并选择了GTK+样式,但这只改善了一点,尽管它仍然看起来非常丑陋(像256色调色板,字体是斜体)。我也安装了许多gtk库,但没有什么帮助。我使用的是Qt-4.7.4。我知道它应该看起来不同,因为在Windows上这个问题并没有出现,即使在我的老板的电脑上,他也在使用Ubuntu,应用程序看起来好得多。
应用程序自己将样式更改为QPlasticStyle。
提前感谢每一个答案。
好吧,又试了很多次,但什么也没改变。也许我可以向您展示问题。应用程序应该看起来像这样(或多或少)(由我的一个同事制作的截图): http://postimage.org/image/70p6sw7xd/full/ 而它实际上看起来像这样(由我制作的截图): http://postimage.org/image/48psktnuj/full/ 到目前为止,有两件事我还没有做过: 1)一开始,我安装了Qt-4.8.1,但它会生成一些OpenGL错误,并且在make时出现问题,因此我随后下载了4.7.4版本(我的老板和同事都在使用),并且一直在安装中挣扎。最终,我只是用4.7.4中的qt-make覆盖了4.8.1中的qt-make,并成功编译了。但是然后我遇到了“问题”。关键是,所有Qt应用程序都会告诉(帮助->关于Qt),它们正在使用Qt-4.8.1,我想知道它是否与问题有关。
2)第二个问题是我的图形。我有MSI CX640笔记本电脑,配备了Nvidia Optimus。在安装Ubuntu后,我必须让它使用集成的Intel HD3000而不是专用的GT520M(它使风扇无谓地变得嘈杂)。我在Google上搜索了解决方法,并成功地禁用了GT520M。这有什么意义-我不确定,但我记得在搜索解决方案的网站上提到了一些OpenGL问题。我认为这与问题无关,但我很沮丧,现在我怀疑一切。
也许这些可以更好地概述问题。
PS。感谢您的尝试,我很感激。

1
http://askubuntu.com/questions/51166/make-qt-programs-look-good-under-xfce - sehe
尽管安装了QtCurve,但我在那里没有找到答案。奇怪的是,在Qt设置中看起来一切都很好。 - joval
6个回答

6
尝试安装qt4-qtconfig软件包。使用qtconfig工具自定义外观和感觉。
sudo apt-get install qt4-qtconfig
qtconfig &

编辑:

如果界面看起来很糟糕,尝试删除(或暂时重命名)~/.config/Trolltech.conf文件。然后使用Qt4设置重新开始。此外,我建议您尝试安装氧化和QtCurve样式。


pfff,你已经在使用qtconfig了,这就是你所说的Qt4设置。现在我在KDE菜单中看到它了。请忽略这个答案。抱歉。 - dschulz

1

第一种建议的方法

您尝试过通过命令行手动更改应用程序的样式吗?转到应用程序文件夹,其中包含编译版本的程序,并通过附加-style cleanlooks或任何其他预定义样式(windowsmotifcdeplastiquecleanlooksgtk+)来执行它。如果程序名为foo,则必须编写:

foo -style gtk+

与您的老板电脑进行外观比较。这将表明问题是样式还是Qt中预定义样式的选择。

另一种可能的方法

知道您已经覆盖了先前的安装,也许某些库文件已经损坏、丢失或未被Qt4.7.4覆盖。

如果是这种情况,您可以通过在某些目录之间执行diff来发现哪些文件已经损坏或误导,这些目录包括您的老板电脑和您的电脑。

Qt库通常位于/usr/lib/i386-linux-gnu/(其中包含预定义的样式,预编译),文件名的形式为libQt...

如果您检查一些项目的Makefile并搜索-L开关,就可以验证库的路径。也许您的库在另一个文件夹中,比如直接在/usr/lib中。

因此,您可以使用以下命令列出库及其名称和大小:

ls -l /usr/lib/i386-linux-gnu/libQt*

如果您发现一些链接指向错误的位置,或版本号混乱,则说明您已经找到了问题所在。如果没有,请与老板的另一个列表进行比较(可能文件大小会显示Qt4.8的残留物)。

我不知道您是否可以将库文件从一台计算机替换到另一台计算机。可以试试。最坏的情况是您需要重新安装Qt。


你的第一个建议没有生效,我也没有理解第二个建议,但是执行 ls -l /usr/lib/i386-linux-gnu/libQt*却没有返回任何结果。 - joval

0

在Ubuntu 14.04上,当以常规用户身份运行时,应用程序看起来很好,但以root身份运行时,它使用非常丑陋的motif主题。

我能够通过使用以下语句使应用程序使用漂亮的默认radiance主题:

app.setStyle("gtk")

其中appQApplication实例。

请参见http://doc.qt.io/qt-4.8/qapplication.html#setStyle-2


0
如果使用Qt 4,您可能只需要将图形系统设置为“raster”。我不知道在Qt 5中是否可以这样做(尝试使用命令行开关,因为setGraphicsSystem函数已经不存在)。
有几种方法可以做到这一点。请参见http://qt-project.org/doc/qt-4.8/qapplication.html#setGraphicsSystemvoid QApplication::setGraphicsSystem(const QString & system) [static] 设置默认的图形后端系统为system,该系统将用于屏幕小部件和 QPixmaps。可用的系统有 "native"、"raster" 和 "opengl"。
有几种设置图形后端的方法,按优先级递减的顺序如下:
  • 应用程序命令行 -graphicssystem 开关
  • QApplication::setGraphicsSystem()
  • QT_GRAPHICSSYSTEM 环境变量
  • Qt 配置 -graphicssystem 开关
如果最高优先级开关设置了无效的名称,则会忽略错误并使用默认的后端。 警告:此函数仅在调用 QApplication 构造函数之前有效。

0

你尝试过清理项目吗?

删除除了 .cpp、.h 和 .pro 以外的所有东西。

这包括必须被删除的扩展名为 .pro.user 的文件。同时,删除 debug 和 release 文件夹。

然后像往常一样从命令行运行 qmakemake

当执行应用程序时,你有使用“sudo”吗?这也会调用另一种风格。


0

嗯,几天过去了,我仍在苦苦挣扎。

但是,我已经正确地重新安装了Qt 4.7.4,如果在其上构建应用程序,则看起来很好,尽管字体像Monotype而不是Ubuntu的字体。 不幸的是,这是Qt的问题,很难弥补。也许你现在知道如何做到这一点? 我正在解决我的问题的最后一部分。

编辑:耶!解决了! 我使用以下链接使4.8.1与我的项目兼容: http://qt-project.org/forums/viewthread/14269/#74232http://ubuntuforums.org/showthread.php?t=1559654

谢谢大家。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接