捕获QComboBox中的文本更改事件

时间:2009-09-02 08:08:17

标签: c++ linux qt qcombobox qkeyevent

我正在Red Hat Linux上开发一个Qt应用程序。我想在QComboBox

中捕获回车按键事件

我已将一个插槽连接到信号editTextChanged(),该信号会在每次按键时发出,但不会为输入键发出。
为什么这样?有没有其他方法可以检测回车

2 个答案:

答案 0 :(得分:4)

我假设你写了一个插槽并将其连接到QComboBox::editTextChanged()信号 当文本更改并且 Enter 不更改文本时会触发此信号,它接受它。如果您想捕获回车,您可以通过多种方式进行操作。

  1. 子类QComboBox
    覆盖keyPressEvent():首先调用QComboBox::keyPressEvent(),然后检查按下的键是否为 Enter 。如果是,则发出信号 您可以随时使用此子类。如果您不知道如何在QDesigner中搜索有关推广小部件的内容。

  2. 实现一个继承QObject的新类。在此课程中,覆盖eventFilter():检查事件是否为按键。如果是,请检查它是否是 Enter 键。如果是,则发出信号 然后,创建此类的实例并将其设置为QComboBox的事件过滤器。将插槽连接到您实施的此实例的信号。

  3. 如果不清楚,我建议您阅读以下页面:

    Using Custom Widgets with Qt designer

    Qt Events & Event Filters

答案 1 :(得分:3)

您还可以查看activated( const QString& )信号。当用户点击进入时可能会发出它。