我有一组五个按钮,我试图在qss文件中定位。我在ui文件中设置的默认位置适用于我需要的其中一个布局。但是,我想在另一个主题中对按钮进行不同的分组。
我是qss文件的新手,并且一直在尝试,但无法弄清楚是否有可能。 “left”属性在这里定义:http://doc.qt.io/archives/4.6/stylesheet.html#left-attr但是当我尝试使用它时没有任何反应。
margin-left实际上会移动按钮,但只是关系。因此,如果按钮位于ui文件中,它们之间的间隙为100,则列表中第二个按钮的左边距偏移100.我做错了什么?可能是ui文件中的一些设置阻止它移动?我已经“打破了布局”,这似乎并不重要。你建议有一个很好的资源吗?
以下是我的qss文件示例。左边没有效果。
QPushButton#Button_1
{
min-width: 50;
max-width: 50;
min-height: 50;
max-height: 50;
position:absolute;
subcontrol-origin: border;
left:200;
}
编辑: 我已经发现我可以通过从QPushButton派生一个类并创建一个“GeomX”qproperty来改变按钮的位置。这似乎有效,但我现在遇到一个奇怪的问题。当我第一次加载我的应用程序时,它会绘制按钮,因为它们位于ui文件上。当我使用我编码的“更改主题”选项,并选择当前加载的主题时,它按照我的预期移动按钮。但是,调整应用程序大小会将它们转储回ui位置并重新启动也会将它们放回到ui位置。 ui文件中是否有可以更改的设置以使其停止移动它们?是否存在我需要解决的加载顺序问题?是否有可能解决这个问题?发生了什么事?
答案 0 :(得分:1)
一般来说,Qt中的样式表用于改变窗口小部件的绘制方式,而不是它的位置(除了添加填充/边距)。作为您引用的文档,“左”属性特定于子控件(即窗口小部件中的组件,而不是窗口小部件本身)。
你想要完成的事情(根据主题改变布局)可能需要采用不同的方法。有两种选择可以通过以下方式对主题进行更改做出反应: