我正在Red Hat Linux上开发Qt应用程序。我想要在QComboBox
中捕获回车键按下事件。在QComboBox中捕获文本更改事件
我已将一个插槽连接到信号editTextChanged()
,该信号针对每个按键发出,但不包含回车键。
为什么这样?有没有其他方法可以检测回车返回?
我正在Red Hat Linux上开发Qt应用程序。我想要在QComboBox
中捕获回车键按下事件。在QComboBox中捕获文本更改事件
我已将一个插槽连接到信号editTextChanged()
,该信号针对每个按键发出,但不包含回车键。
为什么这样?有没有其他方法可以检测回车返回?
我假设你写了一个插槽并将其连接到QComboBox::editTextChanged()
信号。
此信号在文本更改时触发,并且输入不会更改文本,它会接受它。如果您想要拍摄回车,可以采用多种方法。
子类QComboBox
。
覆写keyPressEvent()
:首先拨打QComboBox::keyPressEvent()
,然后检查按键是否为输入。如果是,发出一个信号。
只要你需要使用这个子类。如果您不知道如何在QDesigner中搜索关于推广小部件的信息。
实现一个继承QObject
的新类。在这个类中,覆盖eventFilter()
:检查事件是否是按键。如果是,请检查它是否为输入键。如果是,发出一个信号。
然后,创建此类的实例并将其设置为您的QComboBox
的事件过滤器。将一个插槽连接到您实施的此实例的信号。
如果这些都不清楚,我建议您阅读以下网页:
你也可以看着activated(const QString&)
信号。当用户输入时可能会发射它。
这正是我所需要的。当用户改变选择时,令人沮丧的editTextChanged()会在其他信号之前被调用,所以没有办法知道/为什么/文本已经改变。如果我在editTextChanged()之前获得了激活的()或currentIndexChanged()信号,那么我可以做一些不同的事情......唉。 – 2010-01-19 21:47:59