如何捕获QComboBox弹出关闭事件

时间:2013-10-07 08:09:15

标签: qt popup qcombobox

使用QComboBox派生类来显示我的项目。我的组合框是只读的。但是,当组合框的弹出视图关闭时,如何捕获事件?。例如,当用户在我的组合框中的某处单击鼠标按钮时?
非常感谢你提前。

1 个答案:

答案 0 :(得分:4)

你想要这个活动怎么样?如果QComboBox关闭而没有选择,则没有任何改变。只有在做出选择后才会激活给出的信号。

如果您坚持阅读“close-event”,您可以继承focusOutEvent(QFocusEvent*)或使用事件处理程序进行焦点输出事件并发出自定义信号。最后你想在hadEditFocus()之前设置一个布尔标志,这样你就可以看到下拉列表是否会被打开。

编辑: 最终,将showPopup()hidePopup()子类化并重新实现为更容易:

void MyClass::showPopup() 
{
  QComboBox::showPopup();
  emit signalPopupShown();
}

void MyClass::hidePopup()
{
  QComboBox::hidePopup();
  emit signalPopupHidden();
}

但我不确定hidePopup()是否会在焦点松散时被调用。