【问题标题】:maximum height is no more than 111最大高度不超过11​​1
【发布时间】:2019-11-25 16:59:10
【问题描述】:

我正在尝试在 QlineEdit 中实现 Qcompleter。当我尝试更改 QAbstractItemView 的最大大小时,没有任何反应,它保持在默认的最大大小。

描述 QCompleter 最大尺寸的图像。

如果我将最大高度设置为低于此尺寸,它会起作用并受到限制。但是如果我在上面设置一个值,它就不起作用并保持默认大小。

我正在尝试做的测试代码:

class MainWindow(QtWidgets.QMainWindow):

    def __init__(self):
        super().__init__()

        self.setFixedSize(800, 500)


        p = QtGui.QPalette()
        p.setColor(QtGui.QPalette.Window, QtCore.Qt.white)

        self.setAutoFillBackground(True)
        self.setPalette(p)
        frame = FrameAutoComplete()
        complete = QtWidgets.QCompleter(['dsadasdsadsa', 'PSDPASDA', 'PDWQEWQEWQE', 'POSTAL ASDSa', 'PODSADsadsa', 'gfgsdfgsdfgsd', 'PSDPASDA', 'PDWQEWQEWQE', 'POSTAL ASDSa', 'PODSADsadsa'])
        complete.setPopup(frame)
        complete.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
        entry = QtWidgets.QLineEdit(self)
        entry.setCompleter(complete)


        self.init_window()

    def init_window(self):

        self.show()


class FrameAutoComplete(QtWidgets.QListView):
    def __init__(self, parent=None):
        super().__init__(parent)

        self.setFrameStyle(QtWidgets.QFrame.Box | QtWidgets.QFrame.Plain)
        self.setWindowFlags(QtCore.Qt.Popup | QtCore.Qt.FramelessWindowHint | QtCore.Qt.NoDropShadowWindowHint)
        self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        #self.setMaximumHeight(400) #NOT WORK
        #self.setMaximumHeight(50) #WORK

app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
sys.exit(app.exec_())

【问题讨论】:

  • 为什么要设置更高的高度?

标签: python python-3.x pyqt pyqt5 qcompleter


【解决方案1】:

弹出窗口的高度是根据maxVisibleItems 计算的,the docs 指出:

maxVisibleItems : int

此属性保存允许的最大值 完成者屏幕上的大小,以项目为单位

默认情况下,此属性的值为 7。

并且还受限于popup本身允许的最大高度,总结起来就相当于:

height_popup = min(maximumHeightof the popup, 
                   height calculate using maxVisibleItems items of QCompleter)

the source code中等效实现。

所以假设您想增加弹出窗口的高度以显示更多项目,那么解决方案是增加maxVisibleItems 属性:

complete.setMaxVisibleItems(number_of_visibles_items)

【讨论】:

  • 谢谢,答案解决了我的问题,但又出现了一个问题。当我设置间距时,弹出窗口的行为不同。不再出现我在setMaxVisibleItems中设置的所有项目,回到上一题,限制弹窗高度,不显示setMaxVisibleItems的所有项目。有什么解决办法吗?
猜你喜欢
  • 1970-01-01
  • 2018-04-07
  • 1970-01-01
  • 2021-02-19
  • 2019-10-10
  • 1970-01-01
  • 2021-01-28
  • 1970-01-01
  • 2021-01-18
相关资源
最近更新 更多