美文网首页
QDataWidgetMapper把model中的数据自动更新到

QDataWidgetMapper把model中的数据自动更新到

作者: 王焕钢 | 来源:发表于2020-02-13 22:17 被阅读0次

1.界面

2.原理

1.当点next时,自动从MODE中取出数据,更新上面几个widget值。

2.QDataWidgetMapper的AutoSubmit模式下,如果编辑字符,失去焦点,MODE中关联的值,被更新

3.代码example

    mapper = new QDataWidgetMapper(this);

    mapper->setModel(model);

    mapper->addMapping(nameEdit, 0);

    mapper->addMapping(addressEdit, 1);

    mapper->addMapping(ageSpinBox, 2);

    connect(previousButton, &QAbstractButton::clicked, mapper, &QDataWidgetMapper::toPrevious);

    connect(nextButton, &QAbstractButton::clicked, mapper, &QDataWidgetMapper::toNext);

    connect(mapper, &QDataWidgetMapper::currentIndexChanged, this, &Window::updateButtons);

----------------------------------------------------------------------------------------------------------------------------------------------

void Window::setupModel()

{

    model = new QStandardItemModel(5, 3, this);

    QStringList names;

    names << "Alice" << "Bob" << "Carol" << "Donald" << "Emma";

    QStringList addresses;

    addresses << "<qt>123 Main Street<br/>Market Town</qt>"

              << "<qt>PO Box 32<br/>Mail Handling Service"

                "<br/>Service City</qt>"

              << "<qt>The Lighthouse<br/>Remote Island</qt>"

              << "<qt>47338 Park Avenue<br/>Big City</qt>"

              << "<qt>Research Station<br/>Base Camp<br/>Big Mountain</qt>";

    QStringList ages;

    ages << "20" << "31" << "32" << "19" << "26";

    for (int row = 0; row < 5; ++row) {

      QStandardItem *item = new QStandardItem(names[row]);

      model->setItem(row, 0, item);

      item = new QStandardItem(addresses[row]);

      model->setItem(row, 1, item);

      item = new QStandardItem(ages[row]);

      model->setItem(row, 2, item);

    }

}

3.总结

QDataWidgetMapper一般是row中的对应的列关联到相应该widget

相关文章

网友评论

      本文标题:QDataWidgetMapper把model中的数据自动更新到

      本文链接:https://www.haomeiwen.com/subject/cvkrfhtx.html