创建“漂亮”Qt自定义小部件

时间:2009-10-05 21:23:54

标签: qt widget

制作自定义小部件(使用Qt)背后的过程是什么?看起来......好吧......难看?

我知道制作一个“自定义小部件”,将一个列表框和一个按钮组合成一个,这是非常微不足道的,但我怎样才能制作看起来更像这样的东西:

QAnalogWidgets

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

尝试搜索任何与“自定义小部件qt”相关的内容只是给了我大量关于如何将它们导入到Designer中的信息 - 所以任何线索都会受到赞赏。

谢谢!

2 个答案:

答案 0 :(得分:29)

根据列出的顺序,基本上有三种不同的尝试:

  1. CSS / stylesheets。样式表在满足您的需求时非常强大,非常棒,可以更改运行时样式。请参阅stylesheet examples
  2. Custom painting。您可以使用自定义绘画进行任何您想要的操作。 Qt对PNG和SVG的支持应该会有很大帮助。您需要查看painting examples。另外,请查看QStyle文档,了解您应该考虑哪种类型的样式信息。
  3. Custom styles。如果您需要自定义整个应用程序,最好创建自己的样式。不适合胆小的人。
  4. 基本上,请使用最适合您的解决方案。另外,请查看Qt Creator,它的样式很好,所有source code都可用。

答案 1 :(得分:10)

这是一个通过删除系统顶部栏并绘制bacground来创建自定义窗口的教程:http://qt.developpez.com/tutoriels/braindeadbzh/customwindow/

由于他是对QWidget进行子类化,因此您可以为所有QWidget子类(如QPushButton)执行此操作。

当您想在QTDesigner中使用它们时,只需包含您的类,然后将“经典”小部件提升为您的自定义小部件。这可能会有所帮助:http://pepper.troll.no/s60prereleases/doc/designer-using-custom-widgets.html.