记录TableWidget

这篇博客详细介绍了Qt中的QtableWidget组件的使用方法,包括设置和获取行列信息、设置表头、设置与获取表项、调整行列样式、以及响应项的信号。此外,还涵盖了如何实现表格的选中变色、设置项的字体颜色、插入图片以及设置滚动条样式等高级功能。对于QtableWidget的常用操作,如插入和删除行列,以及处理项的焦点和选择变化,也有详细的说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QtableWidget提供的方法

    _list << "姓名" << "年龄" << "身高" << "体重";

    //1,(设置,获取)行列信息
   //设置行列数
    ui.tableWidget->setColumnCount(_list.size());
    ui.tableWidget->setRowCount(_list.size());
    //获取行列数
    ui.tableWidget->rowCount();
    ui.tableWidget->colorCount();
    //获取当前行,列 
    ui.tableWidget->currentRow();
    ui.tableWidget->currentColumn();
    //获取当前项的行列
   ui.tableWidget->row(QTableWidget *item);
   ui.tableWidget->column(QTableWidget *item);
//2,设置表头 
ui.tableWidget->setHorizontalHeaderLabels(_list);
ui.tableWidget->setVerticalHeaderLabels(_list);
//设置垂直头不可见
ui.tableWidget->verticalHeader()->setVisible(false);
//设置表头背景色
ui.tableWidget->horizontalHeader()->setStyleSheet("QHeaderView::section{background:skyblue;}");
//3,(设置,获取)项
    //设置当前项
     ui.tableWidget->setItem(row,column, new QTableWidgetItem(QString::fromStdString("测试")));

    //获取当前项
    ui.tableWidget->currentItem();   //QTableWidgetItem *

    //获取当前行列的项
    ui.tableWidget->item(row, column);   //QTableWidgetItem *

    //为当前项设置(获取)控件  
   ui.tableWidget->setCellWidget(row,column,QWidget *);
   ui.tableWidget->cellWidget(row,column);  //通过 dynamic_cast<所转换的控件*>进行转换即可获取
//4,设置行列
//设置行高
ui.tableWidget->verticalHeader()->setDefaultSectionSize(50);
  
//表格列宽设置(枚举值)
 //可设置大小
ui.tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Interactive);
//固定大小
ui.tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);
//拉伸
ui.tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
//根据内容自适应
ui.tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
//----表格选中变色------------------------------------------------------
  //隔行变色
    ui.tableWidget->setAlternatingRowColors(true);
    //选中行变色
    ui.tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
    //选中列变色
    ui.tableWidget->setSelectionBehavior(QAbstractItemView::SelectColumns);
    //选中项变色
    ui.tableWidget->setSelectionBehavior(QAbstractItemView::SelectItems);
//4,其他
 //只读
     ui.tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
     //设置无边框
     ui.tableWidget->setFrameShape(QFrame::NoFrame);
     //设置不显示格子线
     ui.tableWidget->setShowGrid(false);
     //设置选中背景色
     ui.tableWidget->setStyleSheet("selection-background-color:lightblue;");
 //--对项字体颜色设置  获得水平方向表头的Item对象 --------- 
   QTableWidgetItem* columnHeaderItem0 = ui.tableWidget->horizontalHeaderItem(0); 
     //设置字体  
     columnHeaderItem0->setFont(QFont("Helvetica"));
     //另:如果需要对所有的单元格都使用这种字体,则可以使用 
     ui.tableWidget->setFont(QFont("Helvetica"));
     //设置单元格背景颜色 
     columnHeaderItem0->setBackgroundColor(QColor(0, 60, 10));
     //设置文字颜色
     columnHeaderItem0->setTextColor(QColor(200, 111, 30));

     //插入图片
     ui.tableWidget->setItem(row, 0, new QTableWidgetItem(QIcon(":/new/images/kingdemo.ico"), tr("")));
//----------------item选择------------------------------------------------------
// item不能被选择(但是实际上好像还是可以选择的)
 ui.tableWidget->setSelectionMode(QAbstractItemView::NoSelection);  
// 
//当用户选择一个项目时,任何已经被选中的项目都将被取消选择,并且用户不能通过单击它来取消选定的项目。
 ui.tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);

//(类似于多选)当用户以通常的方式选择一个项目时,该项目的选择状态将被打开,其他项目将被单独保留,可以通过将鼠标拖动到上面来进行多个项目。
 ui.tableWidget->setSelectionMode(QAbstractItemView::MultiSelection);

//多选  使用ctrl点选,shift鼠标拖动选择
 ui.tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);

 //多选  使用ctrl,shift鼠标拖动选择
 ui.tableWidget->setSelectionMode(QAbstractItemView::ContiguousSelection);

 //设置水平、垂直滚动条样式
 ui.tableWidget->horizontalScrollBar()->setStyleSheet("QScrollBar{background:transparent;height:10px;}"
     "QScrollBar::handle{background:lightgray;border:2px solid transparent; border-radius:5px;}"
     "QScrollBar::handle:hover{background:gray;}"
     "QScrollBar::sub-line{background:transparent;}"
     "QScrollBar::add-line{background:transparent;}");

 ui.tableWidget->verticalScrollBar()->setStyleSheet("QScrollBar{background:transparent;width: 10px;}"
     "QScrollBar::handle{background:lightgray;border:2px solid transparent; border-radius:5px;}"
     "QScrollBar::handle:hover{background:gray;}"
     "QScrollBar::sub-line{background:transparent;}"
     "QScrollBar::add-line{background:transparent;}");

## **QtableWidget提供的信号**

//对应项获得了焦点时发射本信号
cellActivated(int row, int column);

//对应项的各种角色数据发生了变化时发射本信号
cellChanged(int row, int column);

//对应项鼠标点击时发射本信号
cellClicked(int row, int column);

//对应项鼠标双击时发射本信号
cellDoubleClicked(int row, int column);

//鼠标光标进入到对应项范围内时发射本信号
cellEntered(int row, int column);

//鼠标在对应项范围内按下时发射本信号
cellPressed(int row, int column);

//当前项发生切换时触发
currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn);

//当前项发生切换时触发
currentItemChanged(QTableWidgetItem current, QTableWidgetItem previous);

//项获得了焦点时触发
itemActivated(QTableWidgetItem item);

//对应项的各种角色数据发生了变化时发射本信号;
itemChanged(QTableWidgetItem item);

//对应项鼠标点击时发射本信号
itemClicked(QTableWidgetItem item);

//对应项鼠标双击时发射本信号
itemDoubleClicked(QTableWidgetItem item);

//鼠标光标进入到对应项范围内时发射本信号
itemEntered(QTableWidgetItem item);

//鼠标在对应项范围内按下时发射本信号
itemPressed(QTableWidgetItem item);

//当选中的项发生变化时发射本信号,选中的项通过selectedItems() 方法获取;
itemSelectionChanged()

QtableWidget提供的槽

//清空表格所有数据
void  clear()
//清空表格除表头之外所有数据
void clearContents()
//增删行列
void insertColumn(int column)
void insertRow(int row)
void removeColumn(int column)
void removeRow(int row)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值