我有几个想要自定义的QLineEdit的QCompleter的功能,希望使其与Chrome中的地址/搜索栏类似。
- 如何限制显示的行数?例如,即使有15个匹配项,我只想让QCompleter显示5个。
- 如何调整弹出窗口的大小?例如,我想让弹出窗口紧凑美观。与上面的示例相同,我希望弹出窗口的大小恰好调整为5行,而不显示任何丑陋的滚动条。
- 如何移动弹出窗口?例如,我想调整弹出窗口的垂直位置,使其略低于父部件。
- 如何格式化显示的弹出窗口列表项?例如,我想将匹配的单词部分加粗。
我有几个想要自定义的QLineEdit的QCompleter的功能,希望使其与Chrome中的地址/搜索栏类似。
popup.width() - popup.viewport().width()
)、框架的宽度(2 * popup.frameWidth()
)和最长字符串的宽度(popup.fontMetrics().boundingRect(string).width()
)相加来计算弹出窗口的宽度。QRect
,可以控制弹出窗口的位置(和宽度)。虽然我从未尝试过相同的操作,但文档明确说明要使用maxVisibleItems(int maxItem)
来限制可见项目数量。
至于弹出窗口的自定义,我认为您需要创建QAbstractItemView
的子类,并将其传递给QCompleter::setPopup(QAbstractItemView * popup)
。
maxVisibleItems
,但我不知道它是否是Mac的问题,但它的行为并不像我想象的那样。它只会调整弹出窗口的大小(有点不准确),所以你只能看到5个项目。我期望弹出窗口调整大小并且在弹出列表项中进行裁剪。 - c00kiemonster