QTableWidget控件使用总结

本文详细介绍了QTableWidget控件的使用方法,包括禁止编辑、设置选择模式、显示与隐藏表头、字体对齐与格式设置、单元格值设置等。同时,还讲解了如何在单元格中添加控件、合并单元格、插入图片以及设置列标签等高级功能。

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

QTableWidget介绍

QTbaleWidget是QT对话框设计中常用的显示数据表格的控件。

学习QTableWidget就要首先看看QTableView控件(控件也是有”家世“的!就像研究人一样一样的),因为QTableWidget继承于类QTableView。
两者主要区别是QTableView可以使用自定义的数据模型来显示内容(也就意味着使用时先要通过setModel来绑定数据源),而QTableWidget则只能使用标准的数据模型。
QTableWidget单元格数据是QTableWidgetItem对象来实现的(即就是不需要数据源,单元格内的信息需要逐个填充即可)。
这主要由于QTableView类中有setModel成员函数,而到了QTableWidget类中,该成员函数变成了私有。
使用QTableWidget就离不开QTableWidgetItem。

QTableWidgetItem用来表示表格中的其中一个单元格,整个表格都需要用逐个单元格对象QTableWidgetItem构建起来。

QTableWidget使用总结

(1)禁止编辑表格

在默认情况下,表格里的字符是可以更改的。

 比如双击一个单元格,就可以修改原来的内容,如果想禁止用户的这种操作,让这个表格对用户只读,可以这样:

ui.qtablewidget->setEditTriggers(QAbstractItemView::NoEditTriggers);

(2)设置表格为选择整行

ui.qtablewidget->setSelectionBehavior(QAbstractItemView::SelectRows); 

(3)设置单个选中和多个选中

 单个选中意味着每次只可以选中一个单元格,多个就是相当于可以选择”一片“那种模式。

ui.qtablewidget->setSelectionMode(QAbstractItemView::ExtendedSelection); 

(4)表格表头的显示与隐藏

 对于水平或垂直方向的表头,如果不想显示可以用以下方式进行(隐藏/显示)设置:

ui.qtablewidget->verticalHeader()->setVisible(true);  ui.qtablewidget->horizontalHeader()->setVisible(false);

(5)设置具体单元格中字体的对齐方式

ui.qtablewidget->item(0, 0)->setTextAlignment(Qt::AlignHCenter);

(6)设置具体单元格中字体格式


ui.qtablewidget->item(1, 0)->setBackgroundColor(QColor(0,60,10));   ui.qtablewidget->item(1, 0)->setTextColor(QColor(200,111,100)); ui.qtablewidget->item(1, 0)->setFont(QFont("Helvetica")); 

(7)设置具体单元格的值

ui.qtablewidget->setItem(1, 0, new QTableWidgetItem(str));

(8)把QTableWidgetItem对象内容转换为QString

QString str =ui.qtablewidget->item(0, 0)->data(Qt::DisplayRole).toString();

(9)具体单元格中添加控件

QComboBox *comBox = new QComboBox(); comBox->addItem("F"); comBox->addItem("M"); ui.qtablewidget->setCellWidget(0,3,comBox);

(10)合并单元格

 //合并单元格的效果ui.qtablewidget->setSpan(2, 2, 3, 2);//第一个参数:要改变的单元格行数//第二个参数:要改变的单元格列数//第三个参数:需要合并的行数6 //第四个参数:需要合并的列数

(11)具体单元格中插入图片

ui.qtablewidget->setItem(3, 2, new QTableWidgetItem(QIcon("images/music.png"), "Music"));

(12)设置显示网格

ui.qtablewidget->setShowGrid(true);//显示表格线

(13)设置滚动条

ui.qtablewidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//去掉水平滚动条

(14)设置列标签

//初始化界面QStringList  HStrList;HStrList.push_back(QString("name"));HStrList.push_back(QString("id"));HStrList.push_back(QString("age"));HStrList.push_back(QString("sex"));HStrList.push_back(QString("department"));  //设置行列数(只有列存在的前提下,才可以设置列标签)int HlableCnt = HStrList.count();ui.qtablewidget->setRowCount(10);ui.qtablewidget->setColumnCount(HlableCnt);//设置列标签ui.qtablewidget->setHorizontalHeaderLabels(HStrList);

(15)设置行和列的大小设为与内容相匹配

ui.qtablewidget->resizeColumnsToContents();  ui.qtablewidget->resizeRowsToContents();  

(16)设置字体


ui.qtablewidget->setFont(font);   //设置字体

(17)获取某一单元格的内容

QString strText = ui.qtablewidget->item(0, 0)->text();

(18)清除单元格测内容

  1. <code class="language-cpp">ui.tablewidget->clearContents( );   // 清除表项</code>  
ui.tablewidget->clearContents( );   // 清除表项

(19)删除整个列表

    while(ui.tablewidget->rowCount( ) > 0)    {        ui.tablewidget->removeRow(0);    // 删除第0行    }

(20)获取选定的行

// QTableWidget选中所有单元格及取消选中所有单元格//    ui->allowSelectKeyTableWidget->selectAll();//    ui->allowSelectKeyTableWidget->setFocus();    introwCount=ui->TableWidget->rowCount();    qDebug()<<"rowcount"<<rowCount;    intcolCount=ui->TableWidget->columnCount();    qDebug()<<"colcount"<<colCount;    QTableWidgetSelectionRangerange(0,0,rowCount-1,colCount-1);    ui->TableWidget->setRangeSelected(range,true);//false不选中    ui->TableWidget->setFocus();
方法1
QList<QTableWidgetItem*>items=ui->TableWidget->selectedItems();intcount=items.count();for(inti=0;i<count;i++)    {       introw=ui->TableWidget->row(items.at(i));//获取选中的行       QTableWidgetItem*item=items.at(i);       QStringname=item->text();//获取内容    }

方法2

QList<QTableWidgetSelectionRange>ranges=ui->TableWidget->selectedRanges();    intcount=ranges.count();    for(inti=0;i<count;i++)    {       inttopRow=ranges.at(i).topRow();       intbottomRow=ranges.at(i).bottomRow();       for(intj=topRow;j<=bottomRow;j++)       {          qDebug()<<"selectRow"<<j;        }}






           

给我老师的人工智能教程打call!http://blog.youkuaiyun.com/jiangjunshow
这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值