最大高度不超过11 1

问题描述 投票:0回答:1

我正在尝试在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个回答
0
投票

弹出窗口的高度是根据maxVisibleItems来计算的,默认情况下为maxVisibleItems,它也受弹出窗口本身允许的最大高度的限制,总之,它等效于:]]

height_popup = min(maximumHeightof the popup, 
                   height calculate using maxVisibleItems items of QCompleter)
© www.soinside.com 2019 - 2024. All rights reserved.