如何在PyQt中自定义QCompleter弹出窗口?



我有一些东西为QLineEdit的QCompleter我感兴趣的自定义。我想使它的行为类似于Chrome中的地址/搜索栏。

  1. 如何限制显示的行数?例如,即使有15个匹配,我只希望QCompleter显示5。
  2. 如何调整弹出窗口的大小?例如,我想使弹出窗口漂亮而舒适。根据上面的例子,我希望弹出窗口的大小调整为5行,没有任何显示任何丑陋的滚动条。
  3. 如何移动弹出窗口?例如,我想调整弹出窗口的垂直位置,使其稍微低于父小部件。
  4. 我如何格式化显示的弹出窗口的列表项?例如,我想将匹配的单词部分加粗。
  1. 限制行数:将模型更改为aQStringListModel使用QCompleter.setModel,并在弹出窗口显示之前设置固定数量的项目。同时确保maxVisibleItems设置得当(默认为7)。
  2. 弹出窗口应该调整到正确的高度自动。的宽度可以通过将页边距宽度(popup.width() - popup.viewport().width()),帧的宽度(2 * popup.frameWidth())和最长字符串的宽度(popup.fontMetrics().boundingRect(string).width())。
  3. 可以通过一个参数来控制弹出框的位置(和宽度)适当的QRectQCompleter.complete。
  4. 列表项的格式可以通过在弹出框上设置项委托来控制。有关富文本项委托的示例,请参阅此答案。(但注意,这将影响如何计算弹出窗口的宽度)。

虽然我从未尝试过相同的文档清楚地说明使用maxVisibleItems(int maxItem)来限制数量项目可见。

和自定义的弹出窗口一样,你需要做一个QAbstractItemView的子类,并传递给QCompleter::setPopup(QAbstractItemView * popup)

set setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff)

相关内容

  • 没有找到相关文章

最新更新