QTableWidget常用函数及注意事项

0 常用设置

  //table setting
  //设置表头
  QStringList header;
  header<< "ID" << "Info1"<<"info2" << "info3";
  ui->tableWidget_1->setHorizontalHeaderLabels(header);
  //整行选中的方式
  ui->tableWidget_1->setSelectionBehavior(QAbstractItemView::SelectRows); 
  //禁止修改
  ui->tableWidget_1->setEditTriggers(QAbstractItemView::NoEditTriggers); 
  //显示列表头
  ui->tableWidget_1->verticalHeader()->setVisible(true); 
  //开启自动滚动
  ui->tableWidget_1->setAutoScroll(true);
   // end table setting

 

 

1 添加表头内容

  QStringList header;
  header<<""<<tr("1")<<tr("2")<<tr("3")<<tr("4)<<tr("5");
  tableWidget->setHorizontalHeaderLabels(header);


2 设置表格:整行选择
  tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
  其他参数:
    QAbstractItemView.SelectItems 选中单个单元格
    QAbstractItemView.SelectRows 选中一行
    QAbstractItemView.SelectColumns 选中一列


3 设置表格编辑方式
  tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
  其他参数:
    QAbstractItemView.NoEditTriggers 不对表格内容进行修改
    QAbstractItemView.CurrentChanged 任何时候都能对单元格修改
    QAbstractItemView.DoubleClicked 双击单元格
    QAbstractItemView.SelectedClicked 单击已选中的内容
    QAbstractItemView.EditKeyPressed 按下编辑键后编辑
    QAbstractItemView.AnyKeyPressed 按下任意键就能编辑
    QAbstractItemView.AllEditTriggers 以上条件全包括

4 设置单元格字体颜色、背景颜色和字体字符
  QTableWidgetItem *item = new QTableWidgetItem("ID");
  item->setBackgroundColor(QColor(0,60,10));
  item->setTextColor(QColor(200,111,100));
  item->setFont(QFont("Helvetica"));
  tableWidget->setItem(0,1,item);

5 设置单元格的大小
  //通过指定某个行或者列的大小
  tableWidget->setColumnWidth(3,200);
  tableWidget->setRowHeight(3,60);

  //设置为由内容决定
  tableWidget->resizeColumnsToContents();
  tableWidget->resizeRowsToContents();


6 清除表格数据
  tableWidget->clear(); //清除所有可见数据(包括表头),行还在
  tableWidget->clearContents(); //只清除表中数据,不清除表头内容
  tableWidget->setRowCount(0); //连行也清除掉

7 获取/添加/清除行数据
  //获取选中表格的行号
  int row = tableWidget->currentItem()->row();

  //获取表格中当前总行数
  int row = tableWidget->rowCount();

  //添加一行
  tableWidget->setRowCount(row+1);

  //清除row行
  tableWidget->removeRow(row);


8 注意事项1
  在使用on_tableWidget_currentCellChanged槽函数时需要注意负值的判断,
  否则在使用clear()或clearContents()时进行删除表格数据时会调用此函数而使得程序异常
  void CAN_Demo::on_tableWidget_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)
  {
    // cout << currentRow << currentColumn;
    // cout << previousRow << previousColumn;
    // Q_UNUSED(currentColumn);
    Q_UNUSED(previousRow); //初始化表格后的值为-1
    Q_UNUSED(previousColumn); //初始化表格后的值为-1

    //要增加功能检测
    if(currentRow < 0 || currentColumn < 0)
    {
      return;
    }
    ... //功能实现
  }

参考链接:https://www.cnblogs.com/aiguona/p/10400111.html

posted @ 2020-07-09 17:28  cloos.xie  阅读(1224)  评论(0编辑  收藏  举报