一.使用标准型项模型
1.应用场景
标准项是有行有列的,类似于表格,所以标准项模型一般可以用于管理表格类的数据。
还是先上目标效果:
我们的数据来源于文本文件:
2.界面拖放
需要蔬菜的可以dd我。。。
3.创建模型
在mainwindow.h中
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QStandardItemModel>//标准型模型头文件 QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: Ui::MainWindow *ui; QStandardItemModel* model; }; #endif // MAINWINDOW_H
文本文件中一共有6列,我们可以定义一个变量来记录
在mainwindow.cpp中
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); colCount=6; model=new QStandardItemModel(2,colCount);//创建模型初始化行列 } MainWindow::~MainWindow() { delete ui; }
4.配套模型
在表格中,无疑我们需要许多的选择,我们可以增加一个项选择模型。
在mainwindow.h中
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QStandardItemModel>//标准型模型头文件 #include <QItemSelectionModel>//项选择模型 QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: Ui::MainWindow *ui; int colCount; QStandardItemModel* model; QItemSelectionModel*selectionModel; }; #endif // MAINWINDOW_H
同时,使用标准型模型来初始化项选择模型。
model=new QStandardItemModel(2,colCount); selectionModel=new QItemSelectionModel(model);
5.视图设置模型
ui->tableView->setModel(model); ui->tableView->setSelectionModel(selectionModel);
现在就可以看到了:
表自适应大小(表格组件有讲过哦):
auto hearView=ui->tableView->horizontalHeader(); hearView->setSectionResizeMode(QHeaderView::Stretch);
运行结果:
6.视图属性的设置
设置选择模式,按ctrl可以多个,按shift可以矩形选中
设置选择行为,就是点击是行还是列还是单元格。这里是单元格
ui->tableView->setSelectionMode(QAbstractItemView::ExtendedSelection); ui->tableView->setSelectionBehavior(QAbstractItemView::SelectItems);
参数的选择可以F1在线文档去找。
【qt】标准项模型2:https://developer.aliyun.com/article/1523132