在Qt中是否有相当于.NET的数据绑定?
我想用QStrings填充一些组合框和其他小部件,这些小部件引用我数据库中的特定实体.但是,如果我可以将数据绑定到这些字符串,而不是基于新的组合框选择或基于构建我自己的将使用QStrings搜索的实体索引的其他方案再次查询数据库,那将更清晰.
我提出的最好的方法是从QString派生这些实体并以这种方式将它们推入小部件,但我还没有真正尝试过.我不确定它是否会以我想要的方式工作,而且它看起来像是一个讨厌的黑客.
如果没有数据绑定,你有什么建议?
谢谢.
一种方法是使用Qt模型/视图类(基于QAbstractItemModel),但是他们需要你的小部件继承QAbstractItemView(这是像QTableView等小部件).
如果您想要将Qt模型映射到小部件集,这些小部件与QAbstractItemView没有任何共同之处,您可以使用QDataWidgetMapper,它将单独的小部件映射到Qt模型/视图索引.但无论如何,正如Aaron Digulla所说,你必须写一些锅炉板代码......
作为评论中提到的用户冷淡,您可以使用QDataWidgetMapper该类.这是将任意小部件绑定到存储在数据中的数据的简单方法QAbstractItemModel.
链接页面上的示例显示了几行代码,如何将数据模型链接到常用的输入窗口小部件:
QDataWidgetMapper *mapper = new QDataWidgetMapper;
mapper->setModel(model);
mapper->addMapping(mySpinBox, 0);
mapper->addMapping(myLineEdit, 1);
mapper->addMapping(myCountryChooser, 2);
mapper->toFirst();
Run Code Online (Sandbox Code Playgroud)
嗯,特别是对于组合框,您可以设置一个模型。对于一般的 QObject,您可以使用属性的通知信号来连接或其他非属性相关的信号。我认为还有另一种方法可以做到这一点,但我不记得了。
| 归档时间: |
|
| 查看次数: |
8695 次 |
| 最近记录: |