C++ 通过QT中的qss定位QPUSH按钮

C++ 通过QT中的qss定位QPUSH按钮,c++,css,qt,C++,Css,Qt,我有一组五个按钮,我正试图定位在qss文件中。我在ui文件中设置的默认位置适用于我需要的布局之一。但是,我想在另一个主题中对按钮进行不同的分组 我不熟悉qss文件,一直在试验,但无法确定某些事情是否可行。这里定义了“left”属性:但是当我尝试使用它时,什么也没有发生 左边距实际上会移动按钮,但只是相对地移动。因此,如果按钮放置在ui文件中,它们之间的间距为100,则列表中第二个按钮的剩余边距将偏移100 我做错了什么?是否是ui文件中的某些设置阻止了它移动?我已经“打破了布局”,这似乎并不重要

我有一组五个按钮,我正试图定位在qss文件中。我在ui文件中设置的默认位置适用于我需要的布局之一。但是,我想在另一个主题中对按钮进行不同的分组

我不熟悉qss文件,一直在试验,但无法确定某些事情是否可行。这里定义了“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文件中是否有一个设置,我可以更改它以使其停止移动它们?是否存在我需要解决的装载订单问题?甚至有可能解决这个问题吗?发生了什么?

一般来说,Qt中的样式表用于改变小部件的绘制方式,而不是它的位置(除了添加填充/边距)。正如您引用的文档所提到的,“left”属性特定于子控件(即小部件中的组件,而不是小部件本身)

听起来你想要完成的事情(根据主题改变布局)可能需要一种不同的方法。当主题发生变化时,可以通过以下方式做出反应:

  • 在布局中移动间隔符,将按钮移动到所需位置
  • 使用堆叠小部件,堆栈中的一页对应您想要的每个布局,并根据您使用的主题更改堆栈中显示的页面