难看的Qt应用程序看在Ubuntu下

我在Linux下开发一些Qt应用程序。 我已经下载了源代码并首先在Windows 7下进行了编译,但后来我决定在Ubuntu下工作。 问题是,在Linux中的应用程序看起来像Win95时代。 我已经安装了Qt4的设置,并selectGTK +风格,但这只改善了一点点,虽然它仍然看起来非常丑陋(像256 collors pallette,字体是斜体)。 我也安装了许多gtk库,但没有任何帮助。 我使用Qt-4.7.4。 我知道它应该看起来不一样,因为在Windows上这个问题并没有出现,即使在我的老板的电脑上,谁也在使用Ubuntu,应用程序看起来好多了。

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

预先感谢每一个答案。


那么,另一个尝试,但没有任何改变。 也许我会告诉你这个问题。 应用程序应该如何(或多或less)(由我的一个共同创build的): http : //postimage.org/image/70p6sw7xd/full/

以及它如何看起来像(由我做的): http : //postimage.org/image/48psktnuj/full/

有两件事我迄今还没有做过:
1)开始的时候,我安装了Qt-4.8.1,但是生成了一些OpenGL的错误,于是我下载了4.7.4版本(我的老板和工程师正在使用的版本),并且正在安装。 最后,我用4.7.4中的4.8.1重写了qt-make,编译好了。 但后来我遇到了“问题的东西”。 重点 – 所有的Qt应用程序都告诉(帮助 – >关于Qt)他们正在使用Qt-4.8.1,我想知道它是否与问题有一些联系。

2)第二件事是我的graphics。 我的微星CX640笔记本电脑上搭载了Nvidia Optimus。 安装Ubuntu后,我不得不使用集成的英特尔HD3000而不是专用的GT520M(这使得风扇行为没有必要)。 我已经search了这样做,实际上成功禁用GT520M。 它的意义是什么 – 我不确定,但是我记得在search解决scheme的网站上提到了一些OpenGL的东西)。 我认为这与问题没有什么共同之处,但是我很沮丧,现在我正在洞察一切。

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

PS。 谢谢你的企图,我欣赏他们。

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

 sudo apt-get install qt4-qtconfig qtconfig & 

编辑:

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

你有没有试图清理项目?

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

这包括一个扩展名为.pro.user的文件,该文件也必须被删除。 还要删除调试和释放文件夹。

然后运行qmake并像往常一样从命令行。

你在执行时是否在“申请”你的申请? 这也叫另一种风格。

首先提出的方法

你是否尝试通过命令行手动更改应用程序的样式? 进入应用程序文件夹,在那里你有程序的编译版本,并通过追加-style cleanlooks或任何其他预定义的样式( windowsmotifcdecleanlookscleanlooksgtk+ )来执行它。 如果程序名为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。

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

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

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

感谢大家。

如果使用Qt 4,则可能只需将图形系统设置为“栅格”即可。 我不知道是否可以在Qt 5中执行(尝试命令行开关,因为setGraphicsSystem函数已经消失了)。

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

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

将默认图形后端设置为系统,这将用于屏幕小部件和QPixmaps。 可用的系统是“本地”,“光栅”和“opengl”。

有几种方式来设置图形后端,按照优先级递减的顺序:

  • 应用程序命令行 – 图形系统切换
  • 的QApplication :: setGraphicsSystem()
  • QT_GRAPHICSSYSTEM环境变量
  • Qt配置 – 图形系统切换

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

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

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

我能够使应用程序使用漂亮的默认辐射主题通过使用:

app.setStyle("gtk")

其中appQApplication实例。

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