#include <QtWidgets>
#include <QDebug>
#include "citymodel.h"
CityModel::CityModel(QObject *parent)
: QAbstractTableModel(parent)
{
}
void CityModel::setCities(const QStringList &cityNames)
{
cities = cityNames;
distances.resize(cities.count() * (cities.count() - 1) / 2);
distances.fill(0);
// QAbstractItemModel::beginResetModel();
// QAbstractItemModel::endResetModel();
}
int CityModel::rowCount(const QModelIndex & /* parent */) const
{
//qDebug()<<"rowCount";
return cities.count();
}
int CityModel::columnCount(const QModelIndex & /* parent */) const
{
return cities.count();
}
QVariant CityModel::data(const QModelIndex &index, int role) const
{
if (index.isValid() && role == Qt::DisplayRole)
{
qDebug()<<"hello";
return distances.value(0);
}
return QVariant();
}
bool CityModel::setData(const QModelIndex &index,
const QVariant &value, int role)
{
if (index.isValid() && index.row() != index.column()
&& role == Qt::EditRole) {
int offset = offsetOf(index.row(), index.column());
distances[offset] = value.toInt()+1;
QModelIndex transposedIndex = createIndex(index.column(),
index.row());
// emit dataChanged(index, index);
// emit dataChanged(transposedIndex, transposedIndex);
return true;
}
return true;
}
QVariant CityModel::headerData(int section,
Qt::Orientation orientation ,
int role) const
{
if (role == Qt::DisplayRole)
return cities[section];
return QVariant();
}
Qt::ItemFlags CityModel::flags(const QModelIndex &index) const
{
Qt::ItemFlags flags = QAbstractItemModel::flags(index);
if (index.row() != index.column())
flags |= Qt::ItemIsEditable;
return flags;
}
bool CityModel::removeRows(int row, int count, const QModelIndex &parent)
{
beginRemoveRows(parent,row,row+count-1);
cities.removeOne("test");
endRemoveRows();
return true;
}
bool CityModel::insertRows(int row, int count, const QModelIndex &parent)
{
beginInsertRows(parent,row,row+count-1);
cities.append("test");
endInsertRows();
return true;
}
int CityModel::offsetOf(int row, int column) const
{
if (row < column)
qSwap(row, column);
return (row * (row - 1) / 2) + column;
}
qttableview使用
需积分: 23 33 浏览量
2018-08-01
16:53:33
上传
评论 1
收藏 5KB RAR 举报
soft_123456
- 粉丝: 15
- 资源: 50
最新资源
- 直接插入排序,冒泡排序,直接选择排序.zip
- 在排序2的基础上,再次对快排进行优化,其次增加快排非递归,归并排序,归并排序非递归版.zip
- 实现了7种排序算法.三种复杂度排序.三种nlogn复杂度排序(堆排序,归并排序,快速排序)一种线性复杂度的排序.zip
- 冒泡排序 直接选择排序 直接插入排序 随机快速排序 归并排序 堆排序.zip
- 课设-内部排序算法比较 包括冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序.zip
- Python排序算法.zip
- C语言实现直接插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序、归并排序、计数排序,并带图详解.zip
- 常用工具集参考用于图像等数据处理
- 音乐展示网页、基于Stenography的图像数字水印添加与提取,以及基于颜色矩和Tamura算法的图像相似度评估算法py源码
- 基于EmguCV(OpenCV .net封装),图像数字水印加解密算法的实现,其中包含最低有效位算法,离散傅里叶变换算法+文档书
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈