Tianchi  v0.0.2 build 20130701
C++ library for Qt with VC & mingW
Public 成员函数 | 所有成员列表
TcVariantMapTableModel类 参考

以QVariantMap作为数据行的model,只可追加和清除,不可任意插入与任意 删除,使用时主要分成三部分: 更多...

#include <tcvariantmaptablemodel.h>

类 TcVariantMapTableModel 继承关系图:

Public 成员函数

 TcVariantMapTableModel (QObject *parent=0)
 
virtual Qt::ItemFlags flags (const QModelIndex &index) const
 
virtual QVariant data (const QModelIndex &index, int role=Qt::DisplayRole) const
 
virtual QVariant headerData (int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const
 
virtual int rowCount (const QModelIndex &parent=QModelIndex()) const
 
virtual int columnCount (const QModelIndex &parent=QModelIndex()) const
 返回横向表头(即标题)数量
 
virtual bool setData (const QModelIndex &index, const QVariant &value, int role=Qt::EditRole)
 
virtual bool setHeaderData (int section, Qt::Orientation orientation, const QVariant &value, int role=Qt::EditRole)
 直接返回false,即不可设定横向和竖向表头
 
void setFlags (const QModelIndex &index, Qt::ItemFlags flags)
 设置flags属性
 
void setCheckable (int row, int col, bool checkable)
 设置某一项是否可选中
 
void setChecked (int row, int col, bool checked)
 设置某一项是否选中
 
bool isCheckable (int row, int col) const
 判断某一项是否可选中
 
bool isChecked (int row, int col) const
 判断某一项是否选中
 
void addTitle (const QString &field, const QString &title, int precision=-1)
 添加标题(即横表头)定义 更多...
 
void addData (const QList< QVariantMap > &data)
 添加数据行(多条) 更多...
 
void addData (const QVariantMap &row)
 添加数据行(一条) 更多...
 
const QList< QVariantMap > & data () const
 返回所有数据行常引用
 
QVariantMap data (int row) const
 返回某一行数据(如果无效则返回QVariantMap())
 
const QList< QPair< QString,
QString > > & 
title () const
 返回所有标题定义(first为field, second为title)
 
QPair< QString, QString > title (int col) const
 返回某一列标题定义(first为field, second为title)
 
void setNumberColumn (const QString &field, int precision)
 设置某字段列显示精度
 
void setNumberColumn (int column, int precision)
 设置某列显示精度
 
void clearData ()
 清除所有数据行
 
void clear ()
 清除所有数据行及标题设定
 

详细描述

以QVariantMap作为数据行的model,只可追加和清除,不可任意插入与任意 删除,使用时主要分成三部分:

        1. 创建TcVariantMapTableModel,并定义标题和列属性
        2. 填充数据(即清除数据以及添加数据行)
        3. 获取指定数据行数据
  1. 创建model及定义标题和列属性
    model->addTitle("col1", "Title 1"));
    model->addTitle("col2", "Title 2", 2));// 数字列,保留两位小数
    model->addTitle("col3", "Title 3"));
    model->addTitle("__col4", "Title 4")); // 非原始数据
    tableView->setModel(model);
  1. 填充数据
    model->clearData(); // 清除原来的数据行(保留标题不变)
    QSqlQuery q;
    q.exec("SELECT col1, col2, col3, col4 FROM table1");
    QList<QVariantMap> rows;
    QVariantMap row;
    while (q.next())
    {
    row["col1"] = q.value(0);
    row["col2"] = q.value(1);
    row["col3"] = q.value(2);
    row["col4"] = q.value(3);
    row["__col4"] = row["col4"].toInt() == 1 ? "Yes" : "No";
    rows << row;
    row.clear();
    }
    model->addData(rows);
  1. 获取指定数据行数据
    void XXXX::on_actionYYY_triggered()
    {
    QModelIndexList idxs = tableView->selectionModel()->selectedRows();
    if (idxs.isEmpty())
    {
    return;
    }
    int row = idxs.first().row();
    const QList<QVariantMap> &data = model->data();
    // 获取选定行的col1字段值
    QString strCol1 = data[row]["col1"].toString().trimmed();
    ......
    }

成员函数说明

void TcVariantMapTableModel::addData ( const QList< QVariantMap > &  data)

添加数据行(多条)

参数
data多条数据行
void TcVariantMapTableModel::addData ( const QVariantMap &  row)

添加数据行(一条)

参数
row一条数据行
void TcVariantMapTableModel::addTitle ( const QString &  field,
const QString &  title,
int  precision = -1 
)

添加标题(即横表头)定义

参数
field字段名
title标题显示值
precision如果是数字列,设定其显示精度(-1表示无效)

该类的文档由以下文件生成: