我正在 Red Hat Linux 上开发 Qt 应用程序。我想在 QComboBox
中捕获回车键按下事件。
我已将插槽连接到信号 editTextChanged()
,每次按键都会发出该信号,但 Enter 键 不会发出。
为什么这样?有没有其他方法可以检测回车?
最佳答案
我假设您编写了一个插槽并将其连接到 QComboBox::editTextChanged()
信号。
当文本更改并且 Enter 不更改文本时会触发此信号,它会接受它。如果您想捕获回车,可以采用多种方法。
子类
QComboBox
。
覆盖keyPressEvent()
:首先调用QComboBox::keyPressEvent()
然后检查按下的键是否为 Enter。如果是,则发出信号。
需要时使用这个子类。如果您不知道如何在 QDesigner 中推广小部件,请搜索。实现一个继承
QObject
的新类。在此类中,覆盖eventFilter()
:检查事件是否为按键。如果是,请检查它是否是 Enter 键。如果是,则发出信号。
然后,创建此类的实例并将其设置为您的QComboBox
的事件过滤器。将插槽连接到您实现的此实例的信号。
如果这些不清楚,我建议阅读以下页面:
关于c++ - 捕获 QComboBox 中的文本更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1366388/