0

我很难将模型映射到 Qt 中的小部件。相关代码如下:

头文件声明:

Ui::Widget *ui;
QStringList list;
QStringListModel *model;
QDataWidgetMapper *mapper;

cpp 文件实现(在构造函数中):

ui->setupUi(this); //only creates a QComboBox called comboBox
model = new QStringListModel(this);
mapper = new QDataWidgetMapper(this);
list << "Item 1" << "Item 2" << "Item 3";
model->setStringList(list);
mapper->setModel(model);
mapper->addMapping(ui->comboBox, 0);
mapper->toFirst();

由于某种原因,组合框没有填充 QStringList 列表中的项目。请帮助并告诉我我做错了什么!完全不使用映射器可以正常工作(将模型直接提供给小部件),但这也有学习方面的问题,所以请不要建议不要使用映射器。

非常感谢您的时间和努力。谢谢你。

4

1 回答 1

1

QComboBox不能直接用QDataWidgetMapper. 您需要为其使用单独的模型。查看Combo Widget Mapper示例,了解如何操作。

或者你只是想用一个模型驱动一个组合框?那不是QDataWidgetMapper目的。为此使用QComboBox::setModel()

于 2012-08-24T23:00:51.470 回答