QComboBox :: showPopup()从其QLineEdit中夺走了焦点

时间:2019-07-08 08:53:50

标签: c++ qt focus qwidget qcombobox

为了创建一个QComboBox可以在键入时过滤其值列表,我在QComboBox的editTextChanged-event上附加了一个插槽,以在用户开始键入时打开其列表视图弹出窗口。这样做是这样的:

void SearchableComboBox::slotEditing(QString in_text)
{
    this->showPopup();
}

不幸的是,这立即从QLineEdit中夺走了焦点,我无法键入了。 调用lineEdit()-> setFocus()没什么区别,而且我也不想抓住keyboard(),因为这会给整个世界带来痛苦。 有什么建议吗?

1 个答案:

答案 0 :(得分:0)

为此可以使用“焦点代理”方法。参见https://doc.qt.io/qt-5/qwidget.html#setFocusProxy

通过此弹出窗口会将其输入中继到lineedit。

在您的情况下,您可以尝试类似的操作

this->setFocusProxy( this->lineEdit() );

但是也许您应该阅读如何使用QCompleter。这将在键入时提供自动补全功能,也许对您也有用。