QTableWidget控件使用总结

简介:

QTableWidget介绍

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

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

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

QTableWidget使用总结

(1)禁止编辑表格

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

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

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


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

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


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

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

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


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

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

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


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

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


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


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


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

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


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

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


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

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


(10)合并单元格

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


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

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


(12)设置显示网格

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


(13)设置滚动条

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


(14)设置列标签

  1. //初始化界面  
  2. QStringList  HStrList;  
  3. HStrList.push_back(QString("name"));  
  4. HStrList.push_back(QString("id"));  
  5. HStrList.push_back(QString("age"));  
  6. HStrList.push_back(QString("sex"));  
  7. HStrList.push_back(QString("department"));  
  8.     
  9. //设置行列数(只有列存在的前提下,才可以设置列标签)  
  10. int HlableCnt = HStrList.count();  
  11. ui.qtablewidget->setRowCount(10);  
  12. ui.qtablewidget->setColumnCount(HlableCnt);  
  13.   
  14. //设置列标签  
  15. ui.qtablewidget->setHorizontalHeaderLabels(HStrList);  


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

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


(16)设置字体


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

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

  1. <p>QString strText = ui.qtablewidget->item(0, 0)->text();</p>  

(18)清除单元格测内容

  1. ui.tablewidget->clearContents( );   // 清除表项  

(19)删除整个列表

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

(20)获取选定的行

  1. // QTableWidget选中所有单元格及取消选中所有单元格  
  2. //    ui->allowSelectKeyTableWidget->selectAll();  
  3. //    ui->allowSelectKeyTableWidget->setFocus();  
  4.     introwCount=ui->TableWidget->rowCount();  
  5.     qDebug()<<"rowcount"<<rowCount;  
  6.     intcolCount=ui->TableWidget->columnCount();  
  7.     qDebug()<<"colcount"<<colCount;  
  8.     QTableWidgetSelectionRangerange(0,0,rowCount-1,colCount-1);  
  9.     ui->TableWidget->setRangeSelected(range,true);//false不选中  
  10.     ui->TableWidget->setFocus();  

方法1

  1. QList<QTableWidgetItem*>items=ui->TableWidget->selectedItems();  
  2. intcount=items.count();  
  3. for(inti=0;i<count;i++)  
  4.     {  
  5.        introw=ui->TableWidget->row(items.at(i));//获取选中的行  
  6.        QTableWidgetItem*item=items.at(i);  
  7.        QStringname=item->text();//获取内容  
  8.     }  


方法2

  1. QList<QTableWidgetSelectionRange>ranges=ui->TableWidget->selectedRanges();  
  2.     intcount=ranges.count();  
  3.     for(inti=0;i<count;i++)  
  4.     {  
  5.        inttopRow=ranges.at(i).topRow();  
  6.        intbottomRow=ranges.at(i).bottomRow();  
  7.        for(intj=topRow;j<=bottomRow;j++)  
  8.        {  
  9.           qDebug()<<"selectRow"<<j;  
  10.         }  
  11. }  


转载:http://blog.csdn.net/gatieme/article/details/17991269

目录
相关文章
|
7月前
|
JSON API 开发者
深度分析微店API接口,用Python脚本实现
微店作为知名移动端电商平台,其开放平台提供丰富的API接口,支持商品、订单、客户及营销管理。本文分析其API核心特性,并提供Python调用示例,助力开发者快速集成业务功能。
|
10月前
|
SQL DataWorks 大数据
DataWorks x 婚礼纪:智能一站式数据开发治理平台让千万新人的幸福时刻“数智化”
婚礼纪是杭州火烧云科技推出的结婚服务平台,覆盖婚宴酒店、婚纱摄影等全产业链,年服务超2000万对新人。为应对海量数据处理挑战,婚礼纪选择阿里云DataWorks作为一站式大数据开发治理平台,解决数据血缘不清、指标口径混乱等问题。通过湖仓一体架构与全链路数据治理,实现多源异构数据高效整合,支撑精准营销、交易风控等核心场景。DataWorks新版数据开发Data Studio大幅提升开发效率,Copilot智能助手优化SQL代码生成与测试,助力婚礼纪构建数据驱动的结婚产业服务中枢。
|
数据库
数据库五种基本运算
【5月更文挑战第15天】数据库的关系代数包括并、差、投影、笛卡尔积和选择等基本运算,以及交、连接、除、广义投影和外连接等扩展运算。在这些操作中,笛卡尔积通常最消耗资源,因为它会大幅增加元组数量和计算量。
1813 4
数据库五种基本运算
|
设计模式 数据可视化 C++
【Qt】—— Qt Creator界⾯认识
【Qt】—— Qt Creator界⾯认识
251 3
|
关系型数据库 MySQL 数据库
【条理清晰】在 Windows 上安装 MySQL
【条理清晰】在 Windows 上安装 MySQL
|
传感器 监控 搜索推荐
智能纺织品:健康监测与生活方式的结合
【10月更文挑战第22天】智能纺织品融合了传感器、导电纤维和微电子元件等先进技术,不仅改变了穿着体验,还为健康监测和生活方式的改善带来了新机遇。它们能实时监测心率、血压等生理数据,通过无线通信技术传输至手机或云端,实现远程监控与数据分析。未来,智能纺织品将更加智能化、个性化和环保,成为日常生活中不可或缺的一部分。
|
消息中间件 Java Maven
深入理解Spring Boot Starter:概念、特点、场景、原理及自定义starter
深入理解Spring Boot Starter:概念、特点、场景、原理及自定义starter
|
数据采集 机器学习/深度学习 自然语言处理
本地训练,开箱可用,Bert-VITS2 V2.0.2版本本地基于现有数据集训练(原神刻晴)
按照固有思维方式,深度学习的训练环节应该在云端,毕竟本地硬件条件有限。但事实上,在语音识别和自然语言处理层面,即使相对较少的数据量也可以训练出高性能的模型,对于预算有限的同学们来说,也没必要花冤枉钱上“云端”了,本次我们来演示如何在本地训练Bert-VITS2 V2.0.2模型。
本地训练,开箱可用,Bert-VITS2 V2.0.2版本本地基于现有数据集训练(原神刻晴)

热门文章

最新文章