c++ - 捕获 QComboBox 中的文本更改事件

标签 c++ linux qt qcombobox qkeyevent

我正在 Red Hat Linux 上开发 Qt 应用程序。我想在 QComboBox 中捕获回车键按下事件。

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

最佳答案

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

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

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

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

Using Custom Widgets with Qt designer

Qt Events & Event Filters

关于c++ - 捕获 QComboBox 中的文本更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1366388/

相关文章:

linux - 在 find 命令中查找文件数和文件名,忽略目录

码头的 Qt 调整大小事件

c++ - 用新的小部件替换 QTabWidget 的页面

c++ - 使用 SubclassDlgItem 改变控件类型

c++ - RSA ... GNU MP : Cannot allocate memory (size=1307836444)

c++ - 哪种访问 C++ 枚举数的方式更好?

python - 如何在 PySide/PyQt 中终止纯控制台应用程序?

c++ - FindFirstChagneNotification 找不到指定的文件

linux - 如何解析 dlopen 库中的外部变量

ruby-on-rails - 通过 ruby​​ 调用 shell 命令时,该命令在什么上下文中运行?