需要    #include <QTableWidget>      #include <QTableWidgetItem>

#include "win.h"
#include <QDebug>
#include <QPushButton>
#include <QList> Win::Win(QWidget *parent)
: QWidget(parent)
{
this->resize(,); QPushButton* btn=new QPushButton("按钮",this);
btn->move(,);
connect(btn,&QPushButton::clicked,this,&Win::A); tw=new QTableWidget(this); //创建空表格控件
//tw=new QTableWidget(4,3,this);//创建4行3列表格控件
tw->move(,);
tw->resize(,);
tw->setRowCount();//设置行数--不包括标题
tw->setColumnCount();//设置列数
tw->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"物理");//设置水平标题
//tw->setVerticalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");//设置垂直标题 QTableWidgetItem* item0V0=new QTableWidgetItem("张三");
tw->setItem(,,item0V0); //给指定单元格设置数据
//参数1 行号
//参数2 列号
tw->setItem(,,new QTableWidgetItem("李四")); //给指定单元格设置数据
tw->setItem(,,new QTableWidgetItem("王五"));
tw->setItem(,,new QTableWidgetItem("张三ab"));
tw->setItem(,,new QTableWidgetItem("熊五"));
tw->setItem(,,new QTableWidgetItem("刘六"));
tw->setItem(,,new QTableWidgetItem("邢七"));
tw->setItem(,,new QTableWidgetItem("宋八"));
tw->setItem(,,new QTableWidgetItem("尚九"));
tw->setItem(,,new QTableWidgetItem("施十"));
tw->setItem(,,new QTableWidgetItem("陈十一"));
tw->setItem(,,new QTableWidgetItem("程十二"));
tw->setItem(,,new QTableWidgetItem("洪十三"));
tw->setItem(,,new QTableWidgetItem("齐十四"));
tw->setItem(,,new QTableWidgetItem("谢十五")); tw->setItem(,,new QTableWidgetItem(QString::number()));
//QString::number(86)---int转成 QString
tw->setItem(,,new QTableWidgetItem(QString::number()));
tw->setItem(,,new QTableWidgetItem(QString::number()));
tw->setItem(,,new QTableWidgetItem(QString::number())); //tw->insertRow(1);//插入一行
//参数 行索引 //tw->insertColumn(1);//插入一列
//参数 列索引 QList<QTableWidgetItem*> items= tw->findItems("张三Ab",Qt::MatchContains);//找出匹配的项目
//Qt::MatchExactly 完全匹配才算
//Qt::MatchContains 只要包含指定文本的就算-- 不区分大小写
//返回值:项目列表 QTableWidgetItem* item;
item=items.first();//返回项目列表中的第一个项目指针
int i=item->row();//返回项目的行序号 i=tw->rowCount(); //返回 表格的行数--不包括标题
i=tw->columnCount(); // 返回表格的列数 tw->setColumnWidth(,);//设置列宽
//参数1 列序号
//参数2 列宽
tw->setRowHeight(, ); //设置行高,第一个参数序号,第二个参数高度值
tw->setShowGrid(true); //设置是否显示表格上的网格线,True为显示(默认),False不显示
item0V0->setTextAlignment(Qt::AlignCenter); //设置项目的文本对齐方式
//tw->setSpan(1, 0, 2, 2); //用来合并单元格,前两个int参数分别为起始行序号和列序号,后两个分别为要合并的行数和列数 connect(tw,&QTableWidget::itemClicked,this,&Win::B); //单击表格控件时触发的信号
//这个信号自动传递一个参数:被单击项目的指针
// itemDoubleClicked(QTableWidgetItem *item) 双击表格控件时触发的信号 connect(tw,&QTableWidget::itemSelectionChanged,this,&Win::C);//选择的项目发生变化时触发信号
connect(tw,&QTableWidget::currentItemChanged,this,&Win::D);//当前项目变化时触发信号
//这个信号自动传递二个参数:当前项目指针 前一项目指针
connect(tw,&QTableWidget::currentCellChanged,this,&Win::E);//当前单元格变化时触发信号
//这个信号自动传递四个参数:当前行序号 当前列序号 前一行序号 前一列序号
connect(tw,&QTableWidget::itemChanged,this,&Win::F);//项目内容发生变化时触发信号
//这个信号自动传递一个参数:变化后的项目指针
connect(tw,&QTableWidget::itemPressed,this,&Win::G);//在项目上按下了鼠标时触发信号
//这个信号自动传递一个参数:按下鼠标的项目指针
connect(tw,&QTableWidget::cellChanged,this,&Win::H);//单元格内容发生了修改,编辑完毕时触发信号
//包括用户和指令修改
//这个信号自动传递二个参数:单元格的行序号和列序号
connect(tw,&QTableWidget::cellClicked,this,&Win::I);//单击单元格时触发信号
//这个信号自动传递二个参数:单元格的行序号和列序号 //cellDoubleClicked(int row, int column) 双击单元格时触发信号 connect(tw,&QTableWidget::itemActivated,this,&Win::L);// 如何触发信号 ??? connect(tw,&QTableWidget::itemEntered,this,&Win::M);//表格没有焦点时鼠标按下某项目时触发信号
//这个信号自动传递一个参数:项目指针
} void Win::M(QTableWidgetItem *item){
qDebug()<<"鼠标进入了项目:"<<item->text();
}
void Win::L(QTableWidgetItem *item){
qDebug()<<"激活了项目:"<<item->text();
}
void Win::I(int row, int column){
qDebug()<<"单击了单元格:"<<row<<column;
}
void Win::H(int row, int column){
qDebug()<<"单元格内容变化了:"<<row<<column;
}
void Win::G(QTableWidgetItem *item){
qDebug()<<"按下了鼠标:"<<item->text();
}
void Win::F(QTableWidgetItem *item){
qDebug()<<" 项目变化了"<<item->text();
}
void Win::E(int currentRow, int currentColumn, int previousRow, int previousColumn){
qDebug()<<currentRow<< currentColumn<<previousRow<<previousColumn;
}
void Win::D(QTableWidgetItem *current, QTableWidgetItem *previous){
qDebug()<<current<<previous;
} void Win::C(){
qDebug()<<"选择的项目变化了"; } void Win::B(QTableWidgetItem *item){
qDebug()<<item->text();
//item->text() 返回项目的文本
}
Win::~Win()
{ } void Win::A(){
QTableWidgetItem* item=tw->item(,); //返回指定单元格的项目指针
//item->setText("李明"); //给项目设置文本
//tw->clear(); //清空表格内容--包括标题栏
//tw->clearContents();//清空表格内容--不清空标题栏
//tw->removeRow(1); //删除指定行--下面行自动上移
//tw->removeColumn(1);//删除指定列--右边列自动左移 //tw->scrollToItem(item,QAbstractItemView::PositionAtCenter); //滚动条滚到指定项目
//参数1 项目指针
//参数2:QAbstractItemView::EnsureVisible 确保滚动后项可见
//QAbstractItemView::PositionAtTop 确保滚动后项在视口的顶部
//QAbstractItemView::PositionAtBottom 确保滚动后项在视口的底部
//QAbstractItemView::PositionAtCenter 确保滚动后项在视口的中心 int i;
//i=tw->column(item);//返回项目的列序号
//空项目返回-1 //i=tw->columnCount(); //返回表格列的总数
//i=tw->currentRow(); //返回表格当前行序号
//i=tw->currentColumn(); //返回表格当前列序号 //item=tw->currentItem(); //返回当前项目的指针 //tw->editItem(item); //如果项目是可编辑的,则开始编辑该项目 //item=tw->horizontalHeaderItem(2);//返回指定列的标题项目指针
//如果没有设置标题,返回空指针 //QList<QTableWidgetItem *> items=tw->selectedItems();//返回所有选中项目的指针
//(0xdb929559a0, 0xdb92955620, 0xdb92956b20, 0xdb92954f90) QPushButton* btn1=new QPushButton("按钮1");
//tw->setCellWidget(8,1,btn1); //在指定单元格设置一个空间
//参数1 参数2 单元格行序号和列序号 //tw->removeCellWidget(8,1);//删除指定单元格的控件 //tw->setCurrentCell(1,2); //设置当前单元格 //tw->setCurrentItem(item); //设置当前项目 QTableWidgetItem* item1=new QTableWidgetItem("化学");
//tw->setHorizontalHeaderItem(2,item1); //设置指定列的水平标题
//setVerticalHeaderItem(int row, QTableWidgetItem *item) 设置指定行的垂直标题 //tw->sortItems(2,Qt::DescendingOrder); //对指定列进行排序
//参数1 列序号
//参数2: Qt::AscendingOrder 升序--默认
//Qt::DescendingOrder 降序 //item=tw->takeItem(0,2); //指定单元格移除项目--项目不删除
//返回项目指针 //QTableWidgetItem * QTableWidget::takeVerticalHeaderItem(int row) //移除表格中的垂直标题头
//QTableWidgetItem * verticalHeaderItem(int row) //返回表格中的垂直标题头 //tw->item(0,2)->setFlags(Qt::ItemIsUserCheckable);//设置指定单元格的状态
//Qt::ItemIsEditable 不能编辑--只读
//Qt::ItemIsSelectable 不能选中 //tableWidget->horizontalHeader()->setStyleSheet(“image: url(:/img/a.png);image-position:left; “); //设置表头的样式。 //qDebug()<<item->text();
}

实例下载地址:https://share.weiyun.com/5XJEW44

qt5--表格控件QTableWidget的更多相关文章

  1. [ PyQt入门教程 ] PyQt5中数据表格控件QTableWidget使用方法

    如果你想让你开发的PyQt5工具展示的数据显得整齐.美观.好看,显得符合你的气质,可以考虑使用QTableWidget控件.之前一直使用的是textBrowser文本框控件,数据展示还是不太美观.其中 ...

  2. 表格控件QTableWidget

    搭配QTableWidgetItem使用 样式: import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplica ...

  3. QRowTable表格控件-支持hover整行、checked整行、指定列排序等

    目录 一.开心一刻 二.嘴一嘴 三.效果展示 四.浅谈实现 五.自定义数据源 1.data函数 2.flags函数 六.自定义视图 1.目的 2.问题分析 七.测试 八.相关文章 原文链接:QRowT ...

  4. 如何在web中实现类似excel的表格控件

    Execl功能非常强大,内置的很多函数或公式可以大大提高对数据的加工处理能力.那么在web中有没有类似的控件呢?经过一番搜寻,发现handsontable具备了基本的excel功能支持公式,同时能对数 ...

  5. 最好的Angular2表格控件

    现在市面上有大量的JavaScript数据表格控件,包括开源的第三方的和自产自销的.可以说Wijmo的Flexgrid是目前适应Angular 2的最好的表格控件. Angular 2数据表格基本要求 ...

  6. C# DatrgridView表格控件的一些用法

    public class useDatrgrivView { string conn = null; string sqlComm = null; DataSet das = null; DataGr ...

  7. Silverlight项目笔记5:Oracle归档模式引起的异常&&表格控件绑定按钮

    1.Oracle归档模式产生日志文件引起数据库异常 连接数据库失败,提示监听错误,各种检查监听配置文件,删除再添加监听,无果. sqlplus下重启数据库数据库依然无果,期间碰到多个错误提示: ORA ...

  8. Android入门之GridView(表格控件)

    GridView是一个表格控件,可以在每个单元格中显示自定义的View或者字符串.在这里我们要实现一个图标下方有文字的效果. 1.首先我们应自定义布局文件image_text.xml.代码如下: &l ...

  9. 深入浅出ExtJS 第三章 表格控件

    3.1 表格的特性简介 >.Ext中的表格功能:包括排序/缓存/拖动/隐藏某一列/自动显示行号/列汇总/单元格编辑等实用功能; >.表格由类Ext.grid.GridPanel定义,继承自 ...

随机推荐

  1. android webview 访问 https 页面

    在android 中利用webview 控件进行开发过程中,可能会遇到 webview 访问不了https://的页面如 https://www.google.com.hk 重写onReceivedS ...

  2. 安卓的一些UI美化框架的使用

    目录 一.前言 二.Android-Bootstrap 三.Sweet Alert Dialog 四.ExplosionField 一.前言 在这里记录一些用到过的觉得还算不错的UI第三方开源美化框架 ...

  3. C++学习笔记-继承

    类之间可以建立联系,这就使得类可以有某种关系 类之间的关系 has-A:包含关系,一个类使用另一个已经定义好的类的数据 uses-A:使用关系,友元或者对象参数传递 is-A:是的关系,这就是继承,具 ...

  4. Prometheus 和 Alertmanager实战配置

    Prometheus时序数据库 一.Prometheus 1.Prometheus安装 1)源码安装 prometheus安装包最新版本下载地址:https://prometheus.io/downl ...

  5. Azure Blob 存储简介

    Azure Blob 存储是 Microsoft 提供的适用于云的对象存储解决方案. Blob 存储最适合存储巨量的非结构化数据. 非结构化数据是不遵循特定数据模型或定义(如文本或二进制数据)的数据. ...

  6. 使用php过滤emoji表情

    /** * 过滤字符串中表情 * @param $str string 昵称 * @return string */ public function filterEmoji($str) { $str ...

  7. JS中this的4种绑定规则

    this ES6中的箭头函数采用的是词法作用域. 为什么要使用this:使API设计得更简洁且易于复用. this即不指向自身,也不指向函数的词法作用域. this的指向只取决于函数的调用方式 thi ...

  8. Codeforces 1194A. Remove a Progression

    传送门 再一次题目看错浪费一小时...退役算了 自己手玩一下发现划掉的都是奇数,最后所有奇数都划掉了,证明也挺显然的 所以直接输出 $2m$ 即可 #include<iostream> # ...

  9. 牛客 2B 树 (组合计数)

    传送门 大意: 给定n节点树, 求划分为不超过$k$个连通块的方案数. n,k<=300. 核心观察是每个连通块深度最低的点固定以后染色方案就固定了. 所以答案为$\sum\limits_{i= ...

  10. springboot配置文件之yml的语法学习

    springboot配置文件(.yml/.yaml.properties) YAML(YAML Ain't Markup Language) YAML A Markup Language:是一个标记语 ...