如何将QDataWidgetMapper与QLineEdit一起使用

how to use QDataWidgetMapper with QLineEdit

本文关键字:一起 QLineEdit QDataWidgetMapper      更新时间:2023-10-16

我有一个包含三个字段的表单,我正在尝试用模型中的值填充这些字段。下面是我的头文件和.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应用程序中使用模型。

您的模型有一列和三行。如果要将该列视为一个"项目",则必须指示与QDataWidgetMapper::setOrientation(Qt::Orientation) QDataWidgetMapper的方向。默认值为 Qt::Horizontal(一个"项"是模型的一行),您希望将其设置为 Qt::Vertical

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

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