1、图示
2、源码
//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QWidget>
class QDataWidgetMapper;
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
public slots:
void onPushBtn1Clicked();
void onPushBtn2Clicked();
private:
QDataWidgetMapper *mapper;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include <QDataWidgetMapper>
#include <QStandardItemModel>
#include <QLineEdit>
#include <QPushButton>
#include <QBoxLayout>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
QLineEdit *line_edit_1 = new QLineEdit(this);
QLineEdit *line_edit_2 = new QLineEdit(this);
QPushButton *btn_1 = new QPushButton("previous",this);
QPushButton *btn_2 = new QPushButton("next",this);
QGridLayout *layout = new QGridLayout(this);
layout->addWidget(line_edit_1,0,0);
layout->addWidget(line_edit_2,0,1);
layout->addWidget(btn_1,1,0);
layout->addWidget(btn_2,1,1);
QStandardItemModel *model = new QStandardItemModel(3, 2, this);
model->setItem(0,0, new QStandardItem("xiaoming"));
model->setItem(0,1, new QStandardItem("90"));
model->setItem(1,0, new QStandardItem("xiaogang"));
model->setItem(1,1, new QStandardItem("75"));
model->setItem(2,0, new QStandardItem("xiaohong"));
model->setItem(2,1, new QStandardItem("80"));
//在数据模型的一个区域和一个窗口部件间提供一个映射
mapper = new QDataWidgetMapper(this);
//设置模型
mapper->setModel(model);
//设置窗口部件和模型中的列的映射
mapper->addMapping(line_edit_1,0);
mapper->addMapping(line_edit_2,1);
//显示模型中的第一行
mapper->toFirst();
connect(btn_1, &QPushButton::clicked, this, &Widget::onPushBtn1Clicked);
connect(btn_2, &QPushButton::clicked, this, &Widget::onPushBtn2Clicked);
}
Widget::~Widget()
{
}
void Widget::onPushBtn1Clicked()
{
mapper->toPrevious();//显示上一条
}
void Widget::onPushBtn2Clicked()
{
mapper->toNext();//显示下一条
}