打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
QTableView基本用法讲解,Qt表格控件的使用方法

QTableView是Qt中用来把数据集以表格形式提供给用户的一个控件,它与C++Builder中的DBGrid作用类似。坦白的说,DBGrid的使用要比QTableView更容易一些。但QTableView在使用麻烦的同时,也提供了更多的灵活性。

  

    

  一、添加表头:

  1. QStandardItemModel *model = new QStandardItemModel(); 

  2. model->setColumnCount(2); 

  3. model->setHeaderData(0,Qt::Horizontal,QString::fromLocal8Bit("卡号")); 

  4. model->setHeaderData(1,Qt::Horizontal,QString::fromLocal8Bit("姓名"));

复制代码


  二、设置表格属性:

  1. ui->tableView->setModel(model); 

  2. //表头信息显示居左 

  3. ui->tableView->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft); 

  4. //设置列宽不可变 

  5. ui->tableView->horizontalHeader()->setResizeMode(0,QHeaderView::Fixed); 

  6. ui->tableView->horizontalHeader()->setResizeMode(1,QHeaderView::Fixed); 

  7. ui->tableView->setColumnWidth(0,101); 

  8. ui->tableView->setColumnWidth(1,102);

复制代码


  注:在进行表格设置时必须是“ui->tableView->setModel(model);”在前,属性具体设置在后,

  反之则设置不会生效。如上述代码所示。

  三、添加行(添加三行一样的信息):

  1.  for(int i = 0; i < 3; i++) 

  2.  { 

  3.      model->setItem(i,0,new QStandardItem("2009441676")); 

  4.         //设置字符颜色 

  5.      model->item(i,0)->setForeground(QBrush(QColor(255, 0, 0))); 

  6.         //设置字符位置 

  7.      model->item(i,0)->setTextAlignment(Qt::AlignCenter); 

  8.      model->setItem(i,1,new QStandardItem(QString::fromLocal8Bit("哈哈"))); 

  9.  }

复制代码


  四、删除行:

  1. //x是指定删除哪一行 

  2. model->removeRow(x); 

  3. //删除所有行 

  4. model->removeRows(0,model->rowCount());

复制代码


  再举一个例子:

  在一个药品划价模块中有这样的操作流程:

  检索处方项目成功后,把该项目显示到QTableView里,把需要编辑的数量字段提供给用户输入,用户输入确认后,该项目留在列表中,然后开始下一项目检索录入。

  实现过程如下:

  录入的项目保留在临时表tmp中,界面上的QTableView取名为tbList,与tbList关联的Model取名为tb1。检索成功后,把检索结果插入到临时表中,把需要编辑的字段提供给用户。

  1. tb1=newQSqlTableModel(this,*dbR); //dbR是本应用中的数据源 

  2. tb1->setTable("tmp"); //处方临时表

复制代码


  程序中需要显示的时候,

  1. tbList->setModel(NULL); //清除原先数据集 

  2. tbList->setModel(tb1); //刷新显示

复制代码


  程序中需要提供编辑输入的时候

  1. QModelIndexmdidx=m_ui->tbList->model()->index(row,column); //获得需要编辑的单元格的位置 

  2. m_ui->tbList->setFocus(); //把输入焦点交给tbList 

  3. m_ui->tbList->setCurrentIndex(mdidx); //设定需要编辑的单元格 

  4. m_ui->tbList->edit(mdidx); //开始编辑

复制代码


  有一个问题需要注意。向QTableView中添加记录时,字段一定要完整,不能有空白字段,否则结果无法保存。切记。

  如果需要对用户输入做限制,比如只能在指定的字段输入指定的数据类型,可以通过QItemDelegate来实现。

  贴一段代码,说明QTableView基本用法

  1. QStandardItemModel model; 

  2. //设置大小 

  3. model.setColumnCount(3); //列 

  4. model.setRowCount(musicFound); //行 

  5. //设置标题 

  6. model.setHeaderData(0,Qt::Horizontal,"ID"); 

  7. //添加数据 

  8. for(int j=0;j<row;j++)

  9. {

  10.             //写id

  11.             QStandardItem *itemID = new QStandardItem("hello");//QString::number(j)));

  12.             model.setItem(j,0,itemID);

  13. }

  14. //选择这个model 

  15. m_ui->tableView->setModel(&model); 

  16. //隐藏左边那列 

  17. m_ui->tableView->verticalHeader()->hide(); 

  18. //列宽 

  19. m_ui->tableView->setColumnWidth(0,30); 

  20. //整行选择 

  21. m_ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);

本文链接:

https://blog.csdn.net/imxiangzi/article/details/49204817

其经常使用的函数有1.显示格子 setShowGrid(false);2.由内容调整列 resizeColumnsToContents();3.获取垂直表头 verticalHeader();

当然还有水平表头
4.设置非编辑状态
verticalView->setEditTriggers(QTableView::NoEditTriggers);
5.设置点击行为
verticalView->setSelectionBehavior(QTableView::SelectRows);
6.模型对象
 QStandardItemModel *model = new QStandardItemModel;
 model->setColumnCount(4);
 model->setHeaderData(0,Qt::Horizontal,tr("File"));
 model->setHeaderData(1,Qt::Horizontal,tr("Path"));
 model->setHeaderData(2,Qt::Horizontal,tr("Size"));
 model->setHeaderData(3,Qt::Horizontal,tr("Duration"));
设置显示模型为4列
7.增加项到模型
  QStandardItem* item1 = new QStandardItem(tr("Yesterday Once More.mid"));
 QStandardItem* item2 = new QStandardItem(tr("C://Mid//"));
 QStandardItem* item3 = new QStandardItem(tr("0.001M"));
 QStandardItem* item4 = new QStandardItem(tr("3:48"));
 QList<QStandardItem*> item;
 item << item1 << item2 << item3 << item4;
 model->appendRow(item);
8.设置模型到View
setModel(model);

本文链接:

https://www.xuebuyuan.com/1895740.html

我的测试验证代码:qtguiapplication3.cpp

#include "qtguiapplication3.h"#include <qstandarditemmodel.h>
QtGuiApplication3::QtGuiApplication3(QWidget *parent) : QMainWindow(parent){ ui.setupUi(this);
QStandardItemModel *model = new QStandardItemModel; model->setColumnCount(4); ui.tableView->setModel(model); model->setHeaderData(0, Qt::Horizontal, QString("File")); model->setHeaderData(1, Qt::Horizontal, QString("Path")); model->setHeaderData(2, Qt::Horizontal, QString("Size")); model->setHeaderData(3, Qt::Horizontal, QString("Duration"));
for (int i = 0; i < 3; i++) { model->setItem(i, 0, new QStandardItem("2009441676")); //设置字符颜色 model->item(i, 0)->setForeground(QBrush(QColor(255, 0, 0))); //设置字符位置 model->item(i, 0)->setTextAlignment(Qt::AlignCenter); model->setItem(i, 1, new QStandardItem(QString::fromLocal8Bit("哈哈"))); } ui.tableView->setColumnWidth(0, 100); ui.tableView->setColumnWidth(1, 50); ui.tableView->setColumnWidth(2, 80); ui.tableView->setColumnWidth(3, 80); }

运行结果:

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Qt Qtableview 的一些用法
QTableView使用及添加控件(按钮)
QTableView用法小结
数据库 qt tableview
QTableview 用法
Qt5.9中表格控件QTableView用法示例
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服