【问题标题】:how to use QDataWidgetMapper with QLineEdit如何将 QDataWidgetMapper 与 QLineEdit 一起使用
【发布时间】:2015-01-12 23:08:51
【问题描述】:

我有一个包含三个字段的表单,我正在尝试使用模型中的值填充这些字段。下面是我的头文件和 .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 将一行或一列映射到小部件。列表模型将每个项目作为一列中的一行。你到底想做什么?您希望小部件在 mapper-&gt;toNext() 之后显示什么?
  • @Leiaz 我有一个包含三个值的列表,这个列表附加到一个模型,如上所示。我希望所有三个值都显示在三个文本字段中。就像我希望第一个文本字段显示“abc”,下一个字段显示“def”和最后一个“ghi”。我怎样才能获得该功能?

标签: c++ qt qt4 qt-creator


【解决方案1】:

您的模型有一列三行。如果要将列视为一个“项目”,则必须使用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);

【讨论】:

    猜你喜欢
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    • 2023-03-13
    • 2014-09-25
    • 2016-01-30
    相关资源
    最近更新 更多