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
网友评论