2009-10-05 130 views
25

制作自定义窗口小部件(使用Qt)后面的过程看起来不好......丑陋?创建“漂亮”的Qt自定义窗口小部件

我知道这是相当琐碎,做一个“自定义窗口小部件”有说,一个列表框和拼凑成一个按钮,但我会怎样做一些看起来更像是这样的:

QAnalogWidgets

我做了一些基本上使用PNG背景(我在Photoshop中制作)的基本元素(如QLabel放置在它们上面)的粗略实物模型,但我不认为这是我应该如何做的。我知道Qt支持CSS - 这是人们用来创建实际看起来不错的小部件吗?我是否需要在paintEvent方法中工作? OpenGL的?

试图寻找任何“自定义小部件qt”相关的东西只是给我吨如何将它们导入到设计器等信息 - 所以任何线索将不胜感激。

谢谢!

回答

28

有三个基本不同的东西去尝试,在列出的顺序:

  1. CSS/stylesheets。如果足够强大以满足您的需求,样式表非常好,并允许运行时样式更改。请参阅stylesheet examples
  2. Custom painting。您可以使用自定义绘画几乎做任何事情。 Qt对PNG和SVG的支持应该会有很大的帮助。你会想看看painting examples。另外,请看QStyle文档以了解您应考虑哪些类型的信息。
  3. Custom styles。如果您需要自定义整个应用程序,则最好创建自己的样式。不是因为心灵的隐隐。

基本上,请选择适合您的最简单的解决方案。另外,看看Qt Creator,它的风格很好,并且所有source code都可用。

+0

谢谢,我已经在Java Swing中做了一些自定义绘画,所以我会给出一个透视图 – swanson 2009-10-05 22:52:29

10

这里是一个教程,通过删除系统顶部栏和绘制空格创建自定义窗口:http://qt.developpez.com/tutoriels/braindeadbzh/customwindow/

由于他是一个QWidget的子类,你可以对所有的QWidget子类(比如QPushButton)做这件事。

当你想在QTDesigner中使用它们时,只需包含你的类,然后将一个“经典”小部件提供给你的自定义小部件。这可能是有益的:http://pepper.troll.no/s60prereleases/doc/designer-using-custom-widgets.html.

+3

谢谢,这看起来很有前途......如果只有我说法语:D 但代码是英文的,所以我会检查出来! – swanson 2009-10-05 22:51:42

+0

对不起法语...我知道这个教程存在英文(因为它是一个翻译),但我只收藏法文。 – 2009-10-05 22:58:18