如何强制多个视图显示同一模型行

麦克风

我有多个共享同一模型的QCombobox。通常,他们可以独立选择该模型中的项目。在某些情况下,我希望强制这些组合框显示相同的模型行,即,当一个选择更改时,应在其他组合中反映出来。

这可以通过(可能是)信号和插槽来完成,但是我想知道是否有一种方法可以从模型端更加干净地进行。即强制所有视图显示同一行。

下面的注释指向在组合中共享selectionModel。我通过将我的组合收集到列表中并在其上设置模型来完成此操作:

QList<QComboBox*> my_combos;
// .. then populate my_combos .. then
QComboBox *combo;
foreach(combo, my_combos)
    combo->setModel(&_my_model);

然后

QItemSelectionModel *selectionmodel = my_combos.at(0)->view()->selectionModel();
  foreach(combo, my_combos)
  {
    if (combo == my_combos.at(0))
      continue;
    combo->view()->setSelectionModel(selectionmodel);
  }

我在这里错过了一步吗?

库巴并没有忘记莫妮卡

该选择是红色鲱鱼。QComboBox不允许选择多个项目。您所说的“选择”是当前索引。通过将currentIndexChanged信号连接到,可以轻松地在组合框之间共享它setCurrentIndex

// https://github.com/KubaO/stackoverflown/tree/master/questions/combo-shared-select-39247471
#include <QtWidgets>
#include <array>

int main(int argc, char ** argv) {
    QApplication app{argc, argv};
    QStringListModel model;
    model.setStringList({ "foo", "bar", "baz "});

    QWidget ui;
    QHBoxLayout layout{&ui};
    std::array<QComboBox, 3> combos;
    // setIndices could be a method in a class
    auto setIndices = [&combos](int index) {
        for (auto & combo : combos)
            combo.setCurrentIndex(index);
    };
    for (auto & combo : combos) {
        using namespace std::placeholders;
        layout.addWidget(&combo);
        combo.setModel(&model);
        QObject::connect(&combo,
                         static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
                         setIndices);
    }
    ui.show();

    return app.exec();
}

旁注:您可以按值保存小部件。如果它们的数目在编译时是固定的,请使用std::array否则,你可以使用std::listemplace_back由ValueGuy签名。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何同步共享同一模型的多个视图

来自分类Dev

在同一视图上显示多个图表

来自分类Dev

如何在同一行自举模型中强制两个元素对齐

来自分类Dev

如何将数据从同一视图模型和同一可观察数组绑定到多个区域?

来自分类Dev

同一视图中有多个模型?

来自分类Dev

同一视图中有多个模型?

来自分类Dev

如何在多个Partail视图上应用验证,这些视图绑定到MVC中的模型的同一属性?

来自分类Dev

如何在一个视图中显示来自多个模型的数据?

来自分类Dev

使用同一动画隐藏和显示多个视图

来自分类Dev

如何显示同一视图类中的其他视图?

来自分类Dev

如何在同一模型的同一Django视图中保存多个表单?当前,最后一个表格覆盖了保存

来自分类Dev

如何在视图中同一行上的输入字段旁边显示图像?

来自分类Dev

如何在MVC视图的同一行中显示@HTML htmlhelper和@using?

来自分类Dev

如果出现多个值,如何强制输出仅显示一行

来自分类Dev

将多个Caliburn.Micro视图模型绑定到同一视图的不同实例

来自分类Dev

如何强制3个按钮在所有屏幕尺寸上均匀显示在同一行中?

来自分类Dev

如何强制跨度与div在同一行?

来自分类Dev

如何强制按钮并在同一行上选择?

来自分类Dev

如何绑定权重以训练同一模型的多个副本

来自分类Dev

如何在可可的同一窗口中显示不同的视图?

来自分类Dev

显示同一行中单个列的多个列

来自分类Dev

是否可以在Openerp中显示同一对象的多个表单视图或树视图?

来自分类Dev

使用MVC在同一页面上的局部视图和模型绑定的多个实例

来自分类Dev

如何在IntentConfiguration Widget视图iOS 14的CoreData中显示与同一行相关的数据?

来自分类Dev

如何显示同一类别的多个帖子?

来自分类Dev

具有来自不同模型的数据但显示在同一个视图上的两个部分视图

来自分类Dev

创建索引视图时如何两次引用一个表?是否可以基于2个表和多个行来强制唯一性?

来自分类Dev

强制div位于同一行

来自分类Dev

在带有剃须刀的mvc中的同一视图中显示多个表的结果

Related 相关文章

  1. 1

    如何同步共享同一模型的多个视图

  2. 2

    在同一视图上显示多个图表

  3. 3

    如何在同一行自举模型中强制两个元素对齐

  4. 4

    如何将数据从同一视图模型和同一可观察数组绑定到多个区域?

  5. 5

    同一视图中有多个模型?

  6. 6

    同一视图中有多个模型?

  7. 7

    如何在多个Partail视图上应用验证,这些视图绑定到MVC中的模型的同一属性?

  8. 8

    如何在一个视图中显示来自多个模型的数据?

  9. 9

    使用同一动画隐藏和显示多个视图

  10. 10

    如何显示同一视图类中的其他视图?

  11. 11

    如何在同一模型的同一Django视图中保存多个表单?当前,最后一个表格覆盖了保存

  12. 12

    如何在视图中同一行上的输入字段旁边显示图像?

  13. 13

    如何在MVC视图的同一行中显示@HTML htmlhelper和@using?

  14. 14

    如果出现多个值,如何强制输出仅显示一行

  15. 15

    将多个Caliburn.Micro视图模型绑定到同一视图的不同实例

  16. 16

    如何强制3个按钮在所有屏幕尺寸上均匀显示在同一行中?

  17. 17

    如何强制跨度与div在同一行?

  18. 18

    如何强制按钮并在同一行上选择?

  19. 19

    如何绑定权重以训练同一模型的多个副本

  20. 20

    如何在可可的同一窗口中显示不同的视图?

  21. 21

    显示同一行中单个列的多个列

  22. 22

    是否可以在Openerp中显示同一对象的多个表单视图或树视图?

  23. 23

    使用MVC在同一页面上的局部视图和模型绑定的多个实例

  24. 24

    如何在IntentConfiguration Widget视图iOS 14的CoreData中显示与同一行相关的数据?

  25. 25

    如何显示同一类别的多个帖子?

  26. 26

    具有来自不同模型的数据但显示在同一个视图上的两个部分视图

  27. 27

    创建索引视图时如何两次引用一个表?是否可以基于2个表和多个行来强制唯一性?

  28. 28

    强制div位于同一行

  29. 29

    在带有剃须刀的mvc中的同一视图中显示多个表的结果

热门标签

归档