为了创建一个QComboBox可以在键入时过滤其值列表,我在QComboBox的editTextChanged-event上附加了一个插槽,以在用户开始键入时打开其列表视图弹出窗口。这样做是这样的:
void SearchableComboBox::slotEditing(QString in_text)
{
this->showPopup();
}
不幸的是,这立即从QLineEdit中夺走了焦点,我无法键入了。 调用lineEdit()-> setFocus()没什么区别,而且我也不想抓住keyboard(),因为这会给整个世界带来痛苦。 有什么建议吗?
答案 0 :(得分:0)
为此可以使用“焦点代理”方法。参见https://doc.qt.io/qt-5/qwidget.html#setFocusProxy
通过此弹出窗口会将其输入中继到lineedit。
在您的情况下,您可以尝试类似的操作
this->setFocusProxy( this->lineEdit() );
但是也许您应该阅读如何使用QCompleter
。这将在键入时提供自动补全功能,也许对您也有用。