1

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

我已经将一个插槽连接到editTextChanged()每次按键而不是Enter Key发出的信号。
为什么这样?有没有其他方法可以检测回车

4

2 回答 2

4

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

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

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

如果这些不清楚,我建议阅读以下页面:

在 Qt 设计器中使用自定义小部件

Qt 事件和事件过滤器

于 2009-09-02T08:19:00.997 回答
3

您也可以查看activated( const QString& )信号。当用户点击回车时,它可能会发出。

于 2009-09-02T17:17:52.590 回答