2009-09-02 127 views
1

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

我已将一个插槽连接到信号editTextChanged(),该信号针对每个按键发出,但不包含回车键
为什么这样?有没有其他方法可以检测回车返回

回答

4

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

  1. 子类QComboBox
    覆写keyPressEvent():首先拨打QComboBox::keyPressEvent(),然后检查按键是否为输入。如果是,发出一个信号。
    只要你需要使用这个子类。如果您不知道如何在QDesigner中搜索关于推广小部件的信息。

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

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

Using Custom Widgets with Qt designer

Qt Events & Event Filters

3

你也可以看着activated(const QString&)信号。当用户输入时可能会发射它。

+0

这正是我所需要的。当用户改变选择时,令人沮丧的editTextChanged()会在其他信号之前被调用,所以没有办法知道/为什么/文本已经改变。如果我在editTextChanged()之前获得了激活的()或currentIndexChanged()信号,那么我可以做一些不同的事情......唉。 – 2010-01-19 21:47:59