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

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

  软件环境: ubuntu

  最终效果图:

    634868407862099609.jpg 

  一、添加表头:
  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);
复制代码
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值