PyQt5更改样式表中垂直滚动条的宽度会更改minimumSizeHint,希望避免这种情况

时间:2017-07-16 10:53:23

标签: python python-3.x pyqt pyqt5

我正在制作一个小部件,我希望拥有最小的高度。我可以实现这一点,但是当我更改样式表时,minimumSzeHint会降低。这是结果:

enter image description here

最左边的方块就是它的结果。中间是它的行为方式,除了我没有设置样式表。正确的形象是我想要的。我可以通过删除QScrollbar :: vertical的宽度来实现这一点。

 QScrollBar:vertical {
    border: none;
    background-color: rgba(255,255,255,0);
    width: 10px; ##<---- Remove this, to "fix"##
    margin: 0px 0px 0px 0px;
}

我如何保持这种变化,或解决它。我需要对其他内容进行此更改,因此只需删除它就不会像在此图像中看到的那样理想。

我使用具有QTreeWidgetItems的自定义QTreeWidget,将其添加到QVBoxLayout,用作QWidget的布局。制作了4个QTreeWidgets。

然后我使用setStyleSheet并调整小部件以节省空间:

self.resize(self.sizeHint().width(),self.minimumHeight())

self here指向QWidget本身。可以发布简化代码,但在解释这一点时并没有那么多。

1 个答案:

答案 0 :(得分:1)

我现在解决了这个问题,至少部分是通过向滚动条添加一些边距来解决这个问题。这个有用的确切原因,我不知道。但我认为它与如何计算最小尺寸以及滚动条占用的空间以及它如何以某种方式影响最小尺寸有关。所以我想通过使用宽度的余量来弥补宽度的损失(通过增加宽度,我得到预期的结果。)请参阅此处的更改:

QScrollBar:vertical {
    border: none;
    background-color: rgba(255,255,255,0);
    width: 10px;
    margin: 0px 0px 0px 5px;
 }