QAbstractTableModel的使用
2017-07-15 22:12
896 查看
1.效果图
2.源代码
main.cpp
modelex.h
modelex.cpp
2.源代码
main.cpp
#include "mainwindow.h" #include <QApplication> #include "modelex.h" #include <QTableView> int main(int argc, char *argv[]) { QApplication a(argc, argv); ModelEx modelEx; QTableView view; view.setModel(&modelEx); view.setWindowTitle(QObject::tr("modelEx")); view.resize(400,400); view.show(); return a.exec(); }
modelex.h
#ifndef MODELEX_H #define MODELEX_H #include <QAbstractTableModel> #include <QVector> #include <QMap> #include <QStringList> class ModelEx : public QAbstractTableModel { Q_OBJECT public: explicit ModelEx(QObject *parent = 0); //获取表格的行数 virtual int rowCount(const QModelIndex &parent=QModelIndex()) const; //获取表格的列数 virtual int columnCount(const QModelIndex &parent=QModelIndex()) const; //获取某一格子的内容 QVariant data(const QModelIndex &index, int role) const; //返回某一列表头的内容 QVariant headerData(int section, Qt::Orientation orientation, int role) const; signals: public slots: private: QVector<short> army;//表格第一列内容 QVector<short> weaponType;//表格第二列内容 QStringList weapon;//表格第三列内容 QMap<short,QString> armyMap;//表格第一列内容存储的值 QMap<short,QString> weaponTypeMap;//表格第二列内容存储的值 QStringList header;//表格头部内容 void populateModel(); }; #endif // MODELEX_H
modelex.cpp
#include "modelex.h" ModelEx::ModelEx(QObject *parent) : QAbstractTableModel(parent) { armyMap[1]=tr("空军"); armyMap[2]=tr("海军"); armyMap[3]=tr("陆军"); armyMap[4]=tr("海军陆战队"); weaponTypeMap[1]=tr("轰炸机"); weaponTypeMap[2]=tr("战斗机"); weaponTypeMap[3]=tr("航空母舰"); weaponTypeMap[4]=tr("驱逐舰"); weaponTypeMap[5]=tr("直升机"); weaponTypeMap[6]=tr("坦克"); weaponTypeMap[7]=tr("两栖攻击舰"); weaponTypeMap[8]=tr("两栖战车"); populateModel(); } void ModelEx::populateModel() { header<<tr("军种")<<tr("种类")<<tr("武器"); army<<1<<2<<3<<4<<2<<4<<3<<1; weaponType<<1<<3<<5<<7<<4<<8<<6<<2; weapon<<tr("B-2")<<tr("尼米兹级")<<tr("阿帕奇")<<tr("黄蜂级")<<tr("阿利伯克级")<<tr("AAAV")<<tr("M1A1")<<tr("F-22"); } int ModelEx::columnCount(const QModelIndex &parent) const { return 3; } int ModelEx::rowCount(const QModelIndex &parent) const { return army.size(); } QVariant ModelEx::data(const QModelIndex &index, int role) const { if(!index.isValid()) return QVariant(); if(role==Qt::DisplayRole) { switch(index.column()) { case 0: return armyMap[army[index.row()]]; break; case 1: return weaponTypeMap[weaponType[index.row( 4000 )]]; break; case 2: return weapon[index.row()]; default: return QVariant(); } } return QVariant(); } QVariant ModelEx::headerData(int section, Qt::Orientation orientation, int role) const { if(role==Qt::DisplayRole&&orientation==Qt::Horizontal) return header[section]; return QAbstractTableModel::headerData(section,orientation,role); }
相关文章推荐
- Qt:Quick:QAbstractTableModel的使用示例
- QAbstractTableModel 和委托的结合使用
- Qt中QAbstractTableModel、QItemDelegate的联合使用
- QTableView与QAbstractTableModel的使用
- qt4到qt5使用qsqltablemodel的变化
- Qt使用 QSqlTableModel 模型操作数据库
- QTableView中嵌入复选框CheckBox 的四种方法总结:设置QAbstractTableModel的flags()函数法。
- QSqlTableModel 使用方法
- defaultTableModel标准使用方法
- 解决 通过继承QAbstractTableModel并实现headerData方法给QTableView添加标题时,标题不显示 的问题
- QAbstractItemModel 使用
- QAbstractListModel:Qml 使用C++model
- <java><JTable>使用AbstractTableModel & JTable实现号码的分布图(初稿)
- Qt中Qtableview的使用1(QSqlTableModel模型)
- Java使用自定义的tableModel,设置可编辑方式
- Qt实现自定义模型基于QAbstractTableModel
- AbstractTableModel的一般使用
- 为什么这样使用DefaultTableModel会出错???
- QtCreator 使用SQL模型类(QSqlQueryModel,QSqlTableModel,QSqlRelationalTableModel)
- QTableView,Model/View的运用(1),QAbstractTableModel