我想知道如何在pyqt中创建自定义小部件 . 我已经看到了C的许多不同的例子,以及几个pyqt的非描述性例子,但没有真正解释如何实现它并实现它 . 特别是没有一个例子基本上不只是修改了qt-designer输出,而且我从头开始编写我的代码,所以这不是很有用 .
到目前为止,我能找到的最好的例子是basically just someone modifying qt-designer code并没有真正解释其中的任何内容 .
有人可以告诉我一个如何创建自定义小部件的示例吗?
Edit: 我正在尝试使用嵌入的 QStackedWidget
创建一个小部件,并在底部按钮来循环页面 .
我还计划为每个页面创建一个单独的小部件,但考虑到我实际上无法完成第一步,我认为当我到达它时我会越过那个桥 .
2 回答
下面将展示如何用2个按钮实现
QStackedWidget
,基本思路是布局设计,为此我们分析一个QVBoxLayout
必须放置QStackedWidget
和另一个布局,这第二个布局将是QHBoxLayout
到有按钮 . 然后我们连接处理页面之间转换的信号 . 同样在这个例子中,我创建了3种类型的小部件,这些小部件将放置在每个页面上 .这里有一些很好的建议,例子和方法 .
我认为您可以通过三种方式划分自定义窗口小部件或任何自定义“事物” .
Behavior:使用所需行为覆盖其默认方法时 .
Layout:您在布局中添加的所有qt对象,项目或窗口小部件都将遵循其位置规则及其策略 .
StyleSheet:如果是Widget对象,你设置Widget的样式,让我们设置它的"CSS",只是为了简洁 . 这里有一些references和examples .
Note: 如果是非Widget对象,您将无法设置StyleSheet,因此您必须覆盖一些绘制方法,创建自己的Painters等等 .
Here are some random examples with some comments along approaching the 3 topics I mentioned above:
小贴士:
您还可以在窗口小部件中使用蒙版,以“疯狂”方式更改其格式 . 例如,如果您需要一个空心环状小部件,您可以拥有具有此格式和一些透明度的图像,从中创建一个QPixMap并将其作为掩码应用于您的小部件 . 不是一件微不足道的工作,而是一种很酷的工作 .
由于我向您展示了没有框架的没有"TopBar"的示例,您还可以查看this其他问题,其中我将展示如何创建自己的顶部栏,移动并调整概念 .