【问题标题】:What signal gets the QComboBox from view?什么信号从视图中获取 QComboBox?
【发布时间】:2016-04-15 11:53:54
【问题描述】:

我有一个 QComboBox。并将一个已实现的 QAbstractItemView 设置为组合框视图。我需要从视图中发出什么信号以使组合知道当前项目已更改?当发出“selectionChanged”或“currentItemChanged”时,所选项目不会出现在组合上,视图仍然显示。

    QComboBox* c = new QComboBox();
    QAbstractItemView* v = new MyComboView();
    c->setView(v);

我会尽量让问题更清楚。 我在组合框上有自定义视图,它显示,鼠标移动,鼠标悬停事件正常工作。但我有一个真正的问题。当我单击它时,模型项目未显示在组合中。我试图发出 selectionChanged 和 currentChanged 信号,但没有帮助。我是否需要为这些信号编写自己的插槽才能使其正常工作,还是应该由 QT 完成?

【问题讨论】:

  • 您尝试过来自 QComboBox 的信号currentIndexChanged(int) 吗?
  • 您的问题似乎描述了XY problem。尝试描述您想要实现的目标、您尝试了什么以及它与预期结果有何不同。
  • 墨菲,抱歉解释不好。我会尽量让它更清楚。

标签: c++ qt qcombobox


【解决方案1】:

没有这样的信号。QComboBox通过事件过滤器获取关于它的视图的信息:

每次鼠标在视图上移动时,当前索引(视图的)都会根据鼠标光标设置。

每次释放鼠标按钮时,视图的当前索引被设置为QComboBox的当前索引并且列表(视图)被隐藏.

【讨论】:

  • 谢谢,托马斯。解决方案是在 MyComboView 中重新实现 mouseReleaseEvent。
猜你喜欢
  • 2013-08-27
  • 1970-01-01
  • 2021-05-31
  • 2016-11-13
  • 2012-01-11
  • 1970-01-01
  • 2012-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多