水平滚动条从不出现在 PyQt5 中的 QTableWidget 上

Horizontal Scrollbar never appears on QTableWidget in PyQt5

我正在尝试在 PyQt5 中的 QTableWidget 上显示表格数据,如下所示。

我已将列设置为 QtWidgets.QHeaderView.ResizeToContents。 但是在数据填充到 QTableWidget 后,虽然 5 列比视口宽 [参考下图],但水平滚动条没有出现。

但是,我可以单击 QTableWidget 中的单元格并向右拖动以查看最后两列。

我也禁用了 'stretchLastHeaderSection' 属性 关于 QTreeView similar post 中提到的,但是水平滚动条仍然没有出现。

可在下面的 link 中找到重现该问题的示例 python 代码和 UI 文件。 https://github.com/PradeepKumarN93/WhosebugQuestions

有人能告诉我当内容大于视口时如何获得水平滚动条吗?

注意:我不是从 ui 文件生成代码,而是使用以下命令直接加载它。 uic.loadUi(join(dirname(realpath(__file__)), "UI", "DMTInputDownloader.ui"), self)

谢谢!

当为像 QScrollBar 这样的复杂小部件设置样式时,您必须非常注意它们的属性,因为在这些情况下,更改样式表负责绘制整个 小部件,不仅仅是更改一些参数。

使用伪选择器为子控件设置所有属性时,应正确考虑大小;在你的例子中,你已经设置了水平滚动条的宽度,但你需要设置它的高度:

QScrollBar:horizontal {              
  border: none;
  background: #F0F0F0;
  <b>height: 10px;</b>
  margin: 0px 0px 0px 0px;
}

另请注意,您也应该为中央小部件设置布局,否则内容将无法正确调整大小:如果 window 太大,小部件仍将位于左上角window 留下很多未使用的 space,如果 window 太小,一些控件将被部分(如果不是完全)隐藏。参见 How to make a Qt Widget grow with the window size?