最大高度不超过111
maximum height is no more than 111
我正在尝试在 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_())
弹出窗口的高度是根据maxVisibleItems
as the docs指出的计算得出的:
maxVisibleItems : int
This property holds the maximum allowed
size on screen of the completer, measured in items
By default, this property has a value of 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)
我正在尝试在 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_())
弹出窗口的高度是根据maxVisibleItems
as the docs指出的计算得出的:
maxVisibleItems : int
This property holds the maximum allowed size on screen of the completer, measured in itemsBy default, this property has a value of 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)