我有一个应用程序,其中包含了很多带有样式表的小部件,但是,我没有向界面添加任何布局,也没有包含中心小部件,但应用程序运行时没有任何问题。在
然而,每当我试图调整应用程序的大小(缩小),小部件当然不会伸缩。在
我做了一点调查(因为我找不到任何与我的问题相关的东西),我在Qt文档中找到了这个,样式表参考:
"The actual image that is drawn is determined using the same algorithm as QIcon (i.e) the image is never scaled up but always scaled down if necessary."
如何使样式表缩小窗口?(如果样式表打开了背景图像)
例如,我有带有样式表的按钮:
btn = QtGui.QPushButton(self)
btn.move(0, 0)
btn.setObjectName('btn)
btn.setStyleSheet("#btn {background-image: url(':/images/somepicture.png'); border: none; }")
我如何使这个按钮缩小窗口,我可以实现这个没有布局吗?如果不是的话,我该如何处理布局?(没有太多限制)
如果您将按钮作为中心小部件添加到
QMainWindow
中,它将自动调整其大小以适应可用空间。但是,要使按钮图像缩放,需要将图像设置为border-image
样式表属性(有点奇怪)。PyQt4的一个工作示例:请注意,您不需要设置id(
objectName
)来将CSS分配给特定的小部件,您只需通过.setStyleSheet()
传入CSS规则。在您不能在
^{pr2}$QMainWindow
上设置布局,因为它已经有一个复杂的布局系统来容纳停靠小部件和工具栏。因此,如果要使用布局向窗口添加多个小部件,则需要使用容器小部件来保存它。下面的工作示例演示了这一点:如果您希望能够绝对定位小部件,而不是将它们添加到布局(这将控制它们的大小/位置),则可以在创建父元素时传递父元素(相对于x、y坐标):
但是,像这样定位一个小部件会失去自动调整它以适应父部件的能力。如果您只想在窗口中的元素周围添加一些填充/间距,请查看
QLayouts
上的.setContentsMargins
,例如,l.setContentsMargins(50,50,50,50)
会在按钮周围加上50像素的边距。在相关问题 更多 >
编程相关推荐