自定义tablemodel,数据前面为什么显示框框


QTableWidget* tableWidget=new QTableWidget(3,2);
    for(int i=0;i<3;i++){
        for(int j=0;j<2;j++){
            QTableWidgetItem* item=new QTableWidgetItem(QString("%1").arg(j+i*2));
            tableWidget->setItem(i,j,item);
        }
    }
    MyTableModel* model=new MyTableModel(tableWidget);
    QTableView *tableView=new QTableView(this);
    setCentralWidget(tableView);
    tableView->setModel(model);
    tableView->show();
#ifndef MYTABLEMODEL_H
#define MYTABLEMODEL_H

#include <QAbstractTableModel>
#include <QTableWidget>
class MyTableModel : public QAbstractTableModel
{
    Q_OBJECT
public:
//    explicit MyTableModel(QObject *parent = 0);
    MyTableModel(QTableWidget* tableWidget,QObject* parent=0)
        :tableWidget(tableWidget),QAbstractTableModel(parent){
    }
    QVariant data(const QModelIndex &index, int role) const;
    QVariant headerData(int section, Qt::Orientation orientation, int role) const;
    bool setData(const QModelIndex &index, const QVariant &value, int role);
    int rowCount(const QModelIndex &parent) const;
    int columnCount(const QModelIndex &parent) const;
    bool insertRows(int row, int count, const QModelIndex &parent);
  //  bool removeRows(int row, int count, const QModelIndex &parent);
    Qt::ItemFlags flags(const QModelIndex &index) const;
signals:

public slots:
private:
    QTableWidget* tableWidget;

};

#endif // MYTABLEMODEL_H

#include "mytablemodel.h"
#include  <QDebug>
//MyTableModel::MyTableModel(QObject *parent) :
//    QAbstractTableModel(parent)
//{
//}

QVariant MyTableModel::data(const QModelIndex &index, int role) const
{
    if(!index.isValid()){
        return QVariant();
    }
    if(index.row()>tableWidget->rowCount()|| index.row()<0){
        return QVariant();
    }
    if(role==Qt::DisplayRole || role==Qt::EditRole)
        return tableWidget->item(index.row(),index.column())->data(Qt::EditRole);
}

QVariant MyTableModel::headerData(int section, Qt::Orientation orientation, int role) const
{
    if(role!=Qt::DisplayRole){
        return QVariant();
    }
    if(orientation==Qt::Horizontal){
        switch(section){
        case 0:return tr("姓名");
        case 1:return tr("年龄");
        default:
             return QVariant();
        }
    }
    else{
        return QString("row(%1)").arg(section);
    }
}

bool MyTableModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
    if(!index.isValid())
        return false;
    if(role==Qt::EditRole){
        tableWidget->item(index.row(),index.column())->setData(Qt::EditRole,value.toString());
        emit dataChanged(index,index);
        return true;
    }
    return false;

}

int MyTableModel::rowCount(const QModelIndex &parent) const
{
    Q_UNUSED(parent);
    return tableWidget->rowCount();
}

Qt::ItemFlags MyTableModel::flags(const QModelIndex &index) const
{
    if(!index.isValid())
        return Qt::ItemIsEditable;
    return QAbstractTableModel::flags(index)|Qt::ItemIsEditable;
}

int MyTableModel::columnCount(const QModelIndex &parent) const
{
    Q_UNUSED(parent);
    return 2;
}

bool MyTableModel::insertRows(int row, int count, const QModelIndex &parent)
{
    beginInsertRows(parent,row,row+count-1);
    for(int i=0;i<count;i++){
        tableWidget->insertRow(row);
    }
    endInsertRows();
    return true;
}

//bool MyTableModel::removeRows(int row, int count, const QModelIndex &parent)
//{

//}



效果图
img

为什么模型数据前面有框框显示,怎么去掉