2013-01-10 24 views
0

从我开始在QT上使用样式表开始,这就是我一直在挣扎的东西。为什么样式化QT小部件会使它们超出大小值?

我有这样的风格:

QPushButton#btnNewCamera 
{ 
    border-radius: 5px; 
    min-width: 20px; 
    min-height: 20px; 
    background-position: center; 
    background-repeat: no-repeat; 
} 

这是代码我不得不设置,使其工作。

createNewCameraBtn = new QPushButton(); 
createNewCameraBtn->setObjectName(tr("btnNewCamera"));  
createNewCameraBtn->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed); 
createNewCameraBtn->setFixedWidth(20); 

它有道理吗?告诉两倍的大小?这些按钮的大小始终相同。 如果我将固定大小设置为小于20,它仍然可以工作(因为它保持样式表的最小大小...所以这让我猜测样式表大小是优先值...)

但是,为什么不只是告诉样式表内的大小。为什么要添加其他的东西?

有人可以解释我发生了什么?为什么在样式表上使用最小宽度来使其工作?为什么不给它关于背景的信息,并使它像老式按钮一样工作?

+0

我想知道什么是强制性的,哪些不是! – darkgaze

回答

1

样式表会改变你的小部件属性,所以在代码和样式表中改变同样的东西是没有必要的。如果你想用CSS制作小部件固定尺寸,你需要设置最小和最大尺寸。否则,小部件可能会调整大小。尽量保持所有样式的东西在一个地方,以保持一切清晰,因为有时属性会与代码和CSS中的混淆。

请记住,属性将按照它们的应用顺序进行更改。因此,如果您先在应用程序上应用CSS,然后更改代码中的属性,那么属性将保留代码中的值。如果您更改代码中的属性,然后应用CSS,CSS值将被保留

+0

感谢卡米尔。 我如何知道之前应用了哪个?我在应用程序的开始加载css。 此外,我试图改变大小只通过样式表,它没有工作。这就是为什么我必须把它放在代码上! – darkgaze

+0

使用最小/最大宽度/高度来控制尺寸时,我从来没有遇到过尺寸问题 –

+0

您只需记住从ui文件中禁用尺寸约束/固定尺寸最小/最大宽度。我记得如果CSS应用于QApplication,它将用于创建窗口小部件,所有其他调用将改变CSS影响 –

相关问题