【问题标题】:Getting rid of blank area at the bottom of a QListWidget摆脱 QListWidget 底部的空白区域
【发布时间】:2017-06-09 05:05:24
【问题描述】:

我将QListWidgetsetItemWidget 一起使用,当将项目添加到列表并向下滚动到底部时,我得到了以下结果:

所以底部有一个完全空白的区域(不可选择,在上面的图像中,列表中的最后一项已被选中)

如何去掉列表底部的这个空白区域?

请注意,列表中的行高可以不同

感谢您的帮助和亲切的问候, 托德

【问题讨论】:

    标签: qt pyqt qt5 pyqt5 qlistwidget


    【解决方案1】:

    我使用完全相同的方法,我通过创建一个包含我的 QListWidget 的小部件来摆脱空白区域并使用:

    listwidget.setFixedSize(widget.width(), listwidget.sizeHintForRow(0) * listwidget.count() + 2 * listwidget.frameWidth())
    

    listwidget是你QListWidget对象

    widget 是包含您的QListWidget 对象的小部件

    【讨论】:

    • 感谢您的帮助,我不确定它是否适合我的情况,因为行可以有不同的高度(我现在更新了问题以明确这一点)
    【解决方案2】:

    可以通过将setVerticalScrollMode 用于QListWidget 来更改为列表完成的垂直滚动类型,以便滚动完成每个像素(而不是 per item 这是默认的):

    self.list_widget.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel)

    结果是 QListWidget 框最顶部的行只能部分绘制,这反过来意味着每个项目滚动时存在的空白区域将消失:

    参考文档: https://doc.qt.io/qt-5/qabstractitemview.html#verticalScrollMode-prop

    【讨论】:

    • 我昨天找了类似的东西,但找不到我要找的东西。一旦你从滚动而不是项目的角度来看待事物,很明显解决方案应该是什么 - 所以我很失望我自己没有想出这个:|
    • 不错的解决方案 :) 如果它符合我的需要,我可以试试这个,你知道与默认滚动模式相比,QListWidget 中的项目数量是否存在一些性能问题?
    • @SyedElec 我不确定,但我不这么认为,他们没有写任何关于性能的文章here 所以我希望它不会产生任何负面影响
    • @sunyata 好的,谢谢,它也适用于QListView
    猜你喜欢
    • 2018-12-28
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    相关资源
    最近更新 更多