QT-QTableView的自定model实例
发布日期:2021-05-10 12:00:58 浏览次数:26 分类:精选文章

本文共 3282 字,大约阅读时间需要 10 分钟。

操作系统:UOS. 

main.cpp

#include "mainwindow.h"#include 
#include
#include
#include
#include
int main(int argc, char *argv[]){ QApplication a(argc, argv); MainWindow w; w.show(); return a.exec();}

mainwindow.h

#ifndef MAINWINDOW_H#define MAINWINDOW_H#include 
#include
#include
#include
#include
#include
#include
class MainWindow : public QMainWindow{ Q_OBJECTpublic: MainWindow(QWidget *parent = 0); ~MainWindow(); void updatedata();private: ModelEx *modelEx; QTableView *view;};#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"MainWindow::MainWindow(QWidget *parent)    : QMainWindow(parent){    QWidget *widget = new QWidget(this); //   widget->resize(1200,1200);    modelEx =new ModelEx();    QGridLayout *mainLayout= new QGridLayout(widget);    view = new QTableView(this);    view->setModel(modelEx);    view->setWindowTitle(QObject::tr("modelEx"));    view->resize(500,500);    QPushButton *btn = new QPushButton(this);    btn->setText(tr("按钮"));    mainLayout->addWidget(view,0,1);    mainLayout->addWidget(btn,1,1);    mainLayout->setSpacing(10);    connect(btn, &QPushButton::clicked,this,&MainWindow::updatedata);    this->setCentralWidget(widget);    this->resize(700,700);    //setLayout(mainLayout);    //mainLayout.show();}void MainWindow::updatedata(){        qDebug() <<"tr";        qDebug() <<"rowCount:"<< modelEx->rowCount(QModelIndex());        qDebug() <<"columnCount:"<< modelEx->columnCount(QModelIndex());        modelEx->army<<1<<2<<3<<4<<2<<1<<4<<3;        modelEx->weaponType<<1<<2<<3<<6<<7<<4<<5<<8;        modelEx->weapon<
<
<
<
<
<
<
<
setModel(NULL); view->setModel(modelEx);}MainWindow::~MainWindow(){}

自定义model

modelex.h

#ifndef MODELEX_H#define MODELEX_H#include
#include
#include
#include
class ModelEx : public QAbstractTableModel{public: explicit ModelEx(QObject *parent=nullptr); virtual int rowCount(const QModelIndex &parent=QModelIndex()) const; // QAbstractItemModel interfacepublic: int columnCount(const QModelIndex &parent) const; QVariant data(const QModelIndex &index, int role) const; // QAbstractItemModel interfacepublic: QVariant headerData(int section, Qt::Orientation orientation, int role) const;public: QVector
army; QVector
weaponType; QMap
armyMap; QMap
weaponTypeMap; QStringList weapon; 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("轰炸机1");    weaponTypeMap[2] = tr("轰炸机2");    weaponTypeMap[3] = tr("轰炸机3");    weaponTypeMap[4] = tr("轰炸机4");    weaponTypeMap[5] = tr("轰炸机5");    weaponTypeMap[6] = tr("轰炸机6");    weaponTypeMap[7] = tr("轰炸机7");    weaponTypeMap[8] = tr("轰炸机8");    populateModel();}void ModelEx::populateModel(){    header<
<
<

 

运行结果如下:

点击按钮可以动态添加数据

上一篇:windows中如何让chrome信任自签名证书?
下一篇:QT treewidget的简单使用

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月03日 02时36分46秒