【发布时间】:2009-09-02 08:08:17
【问题描述】:
我正在 Red Hat Linux 上开发一个 Qt 应用程序。我想在QComboBox 中捕获回车键按下事件。
我已将一个插槽连接到信号 editTextChanged(),每次按键都会发出该信号,但 Enter 键 不会发出该信号。
为什么这样?有没有其他方法可以检测回车?
【问题讨论】:
标签: c++ linux qt qcombobox qkeyevent
我正在 Red Hat Linux 上开发一个 Qt 应用程序。我想在QComboBox 中捕获回车键按下事件。
我已将一个插槽连接到信号 editTextChanged(),每次按键都会发出该信号,但 Enter 键 不会发出该信号。
为什么这样?有没有其他方法可以检测回车?
【问题讨论】:
标签: c++ linux qt qcombobox qkeyevent
我假设您编写了一个插槽并将其连接到QComboBox::editTextChanged() 信号。
当文本更改并且 Enter 没有更改文本时会触发此信号,它会接受它。如果您想捕获回车,您可以遵循多种方法。
子类QComboBox.
覆盖keyPressEvent():首先调用QComboBox::keyPressEvent(),然后检查按下的键是否为Enter。如果是,则发出信号。
需要时使用这个子类。如果您不知道如何在 QDesigner 中推广小部件,请搜索。
实现一个继承QObject 的新类。在这个类中,覆盖 eventFilter() :检查事件是否是按键。如果是,请检查是否是 Enter 键。如果是,则发出信号。
然后,创建此类的一个实例并将其设置为您的QComboBox 的事件过滤器。将插槽连接到您实现的此实例的信号。
如果这些不清楚,我建议阅读以下页面:
【讨论】:
您还可以查看activated( const QString& ) 信号。它可能会在用户按 Enter 键时发出。
【讨论】: