QTableView 控件的简单使用
QTableView类提供了一个表视图的默认模型/视图实现。
一个QTableView实现一个表视图,它显示来自一个模型的项目。这个类用于提供以前由QTable类提供的标准表,但是使用Qt的模型/视图体系结构提供的更灵活的方法。
QTableView类是模型/视图类之一,也是Qt的模型/视图框架的一部分。
QTableView实现由q抽象视图类定义的接口,允许它显示由q抽象模型类派生的模型所提供的数据。
导航
#include "mainwindow.h" #include "ui_mainwindow.h" #include<QCheckBox> #include<QDebug> #include<QCloseEvent> #include<QMessageBox> #include <QStandardItemModel> #include <QStandardItem> #include <QDebug> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); QStandardItemModel* Model = new QStandardItemModel(); //设置列的数量 Model->setColumnCount(2); Model->setHeaderData(0,Qt::Horizontal,QString::fromLocal8Bit("name")); Model->setHeaderData(1,Qt::Horizontal,QString::fromLocal8Bit("age")); //设置表格属性 ui->tableView->setModel(Model); //表头信息显示居左 ui->tableView->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft); //设置列宽 ui->tableView->setColumnWidth(0,100); ui->tableView->setColumnWidth(1,100); //添加元素 for(int i=0;i<10;i++) { Model->setItem(i,0,new QStandardItem(QString("名字%1").arg(i))); Model->setItem(i,1,new QStandardItem(QString("1%1").arg(i))); } //监视哪一行被修改 connect(Model,&QStandardItemModel::itemChanged,[this](QStandardItem*item){ qDebug()<<item->row()<<endl; }); connect(ui->checkBox,&QCheckBox::stateChanged,[this](int state){ qDebug()<<state<<endl; switch (state) { case Qt::Checked: qDebug()<<"被选中"<<endl; break; case Qt::Unchecked: qDebug()<<"取消选中"<<endl; break; case Qt::PartiallyChecked: qDebug()<<"未被完全选中"<<endl; break; default: break; } }); } MainWindow::~MainWindow() { delete ui; } void MainWindow::closeEvent(QCloseEvent *event) { if(event->type()== QEvent::Close) { int ret = QMessageBox::question(this,tr("Are you sure it's closed?"),tr("Are you sure it's closed?")); if(ret == QMessageBox::Yes) { event->accept(); }else { event->ignore(); } } }
最重实现效果: