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)
//{
//}
效果图
为什么模型数据前面有框框显示,怎么去掉