如何在QLineEdit中使用QDataWidgetMapper

时间:2015-01-12 23:08:51

标签: c++ qt qt4 qt-creator

我有一个包含三个字段的表单,我正在尝试使用模型中的值填充这些字段.Below是我的头文件和.cpp文件中的代码:

myForm.h中的

声明

private:
    Ui::MyForm *ui;
    QStringListModel *model;
    QDataWidgetMapper *mapper;

myForm.cpp中的代码

model=new QStringListModel(this);

QStringList list;
list << "abc"<<"def"<<"ghi";
model->setStringList(list);
mapper=new QDataWidgetMapper();
mapper->setModel(model);
mapper->addMapping(ui->lineEdit_13,0);
mapper->toFirst();

当我运行应用程序时,文本字段将填充第一个值“abc”。我不知道如何使用QDataWidgetMapper在窗体上的其他两个文本字段中填充另外两个值“def”和“ghi”。我查看了QDataWidgetMapper可用的各种选项,并且不确定如何填充数据。它始终只填充一个值,其他两个字段为空。如何从模型中读取所有三个值,或者我在这里做错了什么?我刚开始在我的Qt应用程序中使用模型。

1 个答案:

答案 0 :(得分:2)

您的模型有一列三行。如果您希望将列视为一个&#34;项目&#34;,则必须使用QDataWidgetMapper::setOrientation(Qt::Orientation)QDataWidgetMapper指明方向。默认值为Qt::Horizontal(一个&#34;项目&#34;是模型的一行),您要将其设置为Qt::Vertical

然后你像你一样使用addMapping,每一行都是一个部分:

mapper->addMapping(ui->lineEdit_abc,0);
mapper->addMapping(ui->lineEdit_def,1);
mapper->addMapping(ui->lineEdit_ghi,2);