【问题标题】:Why styling QT widgets makes them overstep size values?为什么样式化 QT 小部件会使它们超出大小值?
【发布时间】:2012-12-24 16:40:44
【问题描述】:

自从我开始在 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,它无论如何都可以工作(因为它保持样式表的最小大小......所以这让我猜想样式表大小是优先的......)

但是为什么不直接在样式表中说明大小。为什么要添加其他行?

有人能解释一下这会发生什么吗?为什么要在 styletheet 上使用 min-width 以使其工作?为什么不直接给它背景信息,让它像旧式按钮一样工作?

【问题讨论】:

  • 我想知道什么是强制性的,什么不是!

标签: qt resize size qtstylesheets


【解决方案1】:

样式表会改变您的小部件属性,因此无需在代码和样式表中更改相同的内容。如果要使用 CSS 使小部件固定大小,则需要设置最小和最大尺寸。否则小部件可能会调整大小。尽量将所有样式的东西放在一个地方以保持一切清晰,因为有时属性会与代码和 CSS 中的属性混淆。

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

【讨论】:

  • 谢谢卡米尔。我怎么知道之前应用的是哪个?我在应用程序的开头加载 css。此外,我试图仅通过样式表更改大小,但它不起作用。这就是为什么我也必须把它放在代码上!
  • 在使用最小/最大宽度/高度来控制尺寸时,我从来没有遇到过尺寸问题
  • 您只需要记住从 ui 文件中禁用大小限制/固定大小最小/最大宽度。我记得如果在 QApplication 上应用 CSS,它将用于创建小部件,所以所有其他调用都会改变 CSS 影响
  • 哦。好的。谢谢。我会尽力。我使用这两种尺寸策略,但我将它们与 QT 一起使用......我设置了扩展和固定策略,但随后我设置了尺寸......这有点乱..
  • 在窗口的情况下,大小根本不起作用。你必须在两个地方都设置它。我检查了它,如果没有这两种方法,一些小部件将无法工作。
猜你喜欢
  • 2014-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-18
  • 1970-01-01
  • 2018-05-16
  • 2013-07-28
相关资源
最近更新 更多