【问题标题】:ugly Qt app look under ubuntu丑陋的Qt应用在ubuntu下看
【发布时间】:2012-05-15 12:29:40
【问题描述】:

我参与开发一些在 Linux 下构建的 Qt 应用程序。我已经下载了源代码并首先在 Windows 7 下编译它,但后来我决定在 Ubuntu 下工作。问题是,Linux中的应用程序看起来像Win95时代的。我已经安装了 Qt4 设置并选择了 GTK+ 样式,但这只是稍微改善了外观,尽管它看起来仍然很丑陋(如 256 色调色板,字体为斜体)。我还安装了许多 gtk 库,但没有任何帮助。我使用 Qt-4.7.4。我知道它应该看起来不一样,因为在 Windows 上不会出现问题,即使在我老板的电脑上,他也在使用 Ubuntu,应用程序看起来好多了。

应用程序将样式更改为 QPlasticStyle 本身。

提前感谢您的每一个回答。


好吧,又尝试了很多次,但没有任何改变。也许我会告诉你这个问题。应用程序的外观(或多或少)(由我的一位同事制作): http://postimage.org/image/70p6sw7xd/full/

以及它的实际外观(ss 由我制作): http://postimage.org/image/48psktnuj/full/

到目前为止,我还没有做两件事:
1)一开始,我安装了Qt-4.8.1,但它使用make产生了一些OpenGL错误,所以我下载了4.7.4版本(我的老板和cos正在使用的那个)并且正在努力安装。最后,我刚刚用 4.7.4 中的 qt-make 覆盖了 4.8.1 中的 qt-make,它编译得很好。但后来我遇到了“问题的事情”。重点 - 所有 Qt 应用程序都告诉(Help-> About Qt)他们正在使用 Qt-4.8.1,我想知道它是否与问题有关。

2) 第二件事是我的图形。我有搭载 Nvidia Optimus 的 MSI CX640 笔记本电脑。安装 Ubuntu 后,我不得不使用集成的 Intel HD3000 而不是专用的 GT520M(它使风扇的噪音变得不必要)。我已经用谷歌搜索了这样做的方法,实际上成功地禁用了 GT520M。它有什么意义 - 我不确定,但我记得在我正在寻找解决方案的网站上提到了一些 OpenGL 的东西)。我认为这与问题没有任何共同点,但我很沮丧,现在我正在洞察一切。

也许这些可以更好地概述问题。

附言。感谢您的尝试,我很感激他们。

【问题讨论】:

  • 好吧,尽管安装了 QtCurve,但我并没有在那里找到答案。奇怪的是,在 Qt 设置中它看起来都很好。

标签: qt ubuntu gtk


【解决方案1】:

尝试安装qt4-qtconfig 包。使用qtconfig 工具自定义外观。

sudo apt-get install qt4-qtconfig
qtconfig &

编辑:

如果它看起来很糟糕,请尝试删除(或临时重命名)~/.config/Trolltech.conf 文件。然后使用 Qt4 Settings 重新开始。另外,我建议您尝试安装 Oxygen 和 QtCurve 样式。

【讨论】:

  • pfff,你已经在使用qtconfig,你说的是Qt4设置。现在我在 KDE 菜单中看到了它。无视这个答案。对不起。
【解决方案2】:

第一个提议的方法

您是否尝试过通过命令行手动更改应用程序的样式?转到应用程序文件夹,其中有程序的编译版本,并通过附加-style cleanlooks 或任何其他预定义样式(windowsmotifcdeplastique、@987654326)来执行它@ 或 gtk+)。如果程序名为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* 什么也没返回。
【解决方案3】:

您是否尝试过清理该项目?

删除除 .cpp、.h 和 .pro 之外的所有内容

这包括一个扩展名为 .pro.user 的文件,该文件也必须删除。同时删除调试和发布文件夹。

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

您在执行时是否在“sudoing”您的应用程序?那也叫另一种风格。

【讨论】:

    【解决方案4】:

    好吧,几天过去了,我还在苦苦挣扎。

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

    编辑:万岁!解决了! 我使用 4.8.1 堆叠,使其与我的项目兼容 http://qt-project.org/forums/viewthread/14269/#74232http://ubuntuforums.org/showthread.php?t=1559654

    谢谢大家。

    【讨论】:

      【解决方案5】:

      如果使用 Qt 4,您可能只需将图形系统设置为“光栅”。不知道在Qt 5中能不能做到(试试命令行开关,因为setGraphicsSystem函数没了)。

      有几种方法可以做到这一点。见http://qt-project.org/doc/qt-4.8/qapplication.html#setGraphicsSystem

      void QApplication::setGraphicsSystem ( const QString & system ) [静态]

      将默认图形后端设置为系统,将用于屏幕小部件和 QPixmap。可用的系统有“native”、“raster”和“opengl”。

      有几种方法可以设置图形后端,按优先级递减的顺序排列:

      • 应用程序命令行 -graphicssystem 开关
      • QApplication::setGraphicsSystem()
      • QT_GRAPHICSSYSTEM 环境变量
      • Qt 配置 -graphicssystem 开关

      如果最高优先级开关设置了一个无效的名字,错误将被忽略并使用默认后端。

      警告:此函数仅在调用QApplication构造函数之前有效。

      【讨论】:

        【解决方案6】:

        使用 ubuntu 14.04,应用程序在以普通用户身份运行时看起来不错,但在以 root 用户身份运行时,它使用的是非常丑陋的 motif 主题。

        我可以通过以下方式使应用程序使用漂亮的默认辐射主题:

        app.setStyle("gtk")

        其中appQApplication 实例。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多