数据窗口映射

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();//显示下一条
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值