QTableWidget的基本设置

设置表头

ui->tableWidget->setColumnCount(11);
ui->tableWidget->setRowCount(10);
ui->tableWidget->setHorizontalHeaderLabels(QStringList() << “Id” << “Name” << “Unit” << “Value” << “Min” << “Max” << “Type” << “Mode” << “Enable” << “Last read” << “Last write”);
ui->tableWidget->verticalHeader()->setVisible(false); // 隐藏水平header
ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectItems); // 单个选中
ui->tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); // 可以选中多个

整行选中

ui->tableWidget->setSelectionBehavior ( QAbstractItemView::SelectRows);
ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);

内容居中

ui->tableWidget->item(i,j)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);

单元格不可编辑

ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);

让table失去焦点

ui->tableWidget->setFocusPolicy(Qt::NoFocus);

表格添加一行

int iRow = ui->tableWidget->rowCount();
ui->tableWidget->setRowCount(iRow + 1);

隐藏某一列

ui->tableWidget->setColumnHidden(3,true);

删除所有行

for(int i=0;i<nRowCount;i++)
{
ui->tableWidget->removeRow(0);
}

设置与获取控件

    某单元格设置为控件 QComboBox *cbbSN=new QComboBox();QStringList listSN;listSN<<"A1"<<"A2"<<"A3"<<"A4"<<"B1"<<"B2"<<"B3"<<"B4"<<"C1"<<"C2";cbbSN->addItems(listSN);ui->tableWidget->setCellWidget(row,col,cbbSN);获取控件QComboBox *cbbSN=(QComboBox *)(ui->tableWidget->cellWidget(row,column));//判断单元格是QComboBox还是普通Item//是QComboBoxif( tableWidget->cellWidget(i, 1) != NULL ){auto cellWidget = ( tableWidget->cellWidget(i, 1) );ComboBox *combox=(QComboBox*)cellWidget;sInsert = combox->currentText();insertValue.append( sInsert );}//普通表格单元else{//}

QTableWidget 中插入QCheckBox复选框,状态判断,居中显示
https://blog.csdn.net/hss2799/article/details/109581878

设置某列不可编辑

设置QTableWidget的某些字段不可编辑和背景颜色

/* 设置不可修改的Id Name两列的背景颜色为灰色 */
for(int i = 0; i < rowCount; i++) {
QTableWidgetItem *item = new QTableWidgetItem();
item->setBackground(QBrush(QColor(Qt::lightGray)));
item->setFlags(item->flags() & (~Qt::ItemIsEditable));
ui->tableWidget->setItem(i, 0, item);
}

设置某列可编辑

QTableWidgetItem *item = new QTableWidgetItem();
item->setFlags(item->flags() | Qt::ItemIsEditable);

设置某列为复选框

QTableWidgetItem* item=ui->tabCurve->item(i,0)
item->setCheckState(Qt::Unchecked)

QTableWidget表格内容自适应列宽

void QHeaderView::setSectionResizeMode(ResizeMode mode)

QHeaderView::Interactive
用户可以调整部分的大小。 也可以使用resizeSection()以编程方式调整该部分的大小。 段大小默认为defaultSectionSize。 (另请参见cascadingSectionResizes。)

QHeaderView::Fixed
用户无法调整该部分的大小。 只能使用resizeSection()以编程方式调整该部分的大小。 段大小默认为defaultSectionSize。

QHeaderView::Stretch
QHeaderView将自动调整该部分的大小以填充可用空间。 大小不能由用户或以编程方式更改。屏幕不够大时,会自动缩小,不出现滚动条。

QHeaderView::ResizeToContents
QHeaderView将自动调整该部分的大小以填充可用空间。 大小不能由用户或以编程方式更改。会出现滚动条,显示完整

this->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); //x先自适应宽度
this->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents); //然后设置要根据内容使用宽度的列

QTableWidget如何设置选择模式

设置单行选择,通过调用setSelectionBehavior接口,设置QAbstractItemView::SelectRows的属性

tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); //选中单元格,行还是列

运行程序之后,可以看到单击之后,选中的是当前行,而不是单元格

如果表格不需要支持Ctrl、Shift、 Ctrl+A等操作方法,那么可以调用接口setSelectionMode设置属性为

QAbstractItemView::SingleSelection
tableWidget->setSelectionMode(QAbstractItemView::SingleSelection) //设置单行模式

如果想要表格支持多选模式,比如Ctrl、Shift、 Ctrl+A、鼠标左键按下滑动多选等操作方法,那么可以调用接口setSelectionMode设置属性为QAbstractItemView::ExtendedSelection
//设置单选,多选,扩展选择

tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); //多选模式

##QTableWidget获取行号

QTableWidget::SelectedRanges()

QList<QTableWidgetSelectionRange> ranges = ui.tableWidget->selectedRanges();
if(ranges.count() == 0)
{qDebug() << QStringLiteral("请选择一行");
}
else
{for(int i  = 0; i < ranges.count(); i++){int topRow=ranges.at(i).topRow();int bottomRow=ranges.at(i).bottomRow();for(int j = topRow; j <= bottomRow; j++){qDebug()<<QstringLiteral("当前选择行号为:")<<j;}}
}

ranges四个参数

topRow:所选区域的开始行号;
bottomRow:所选区域的截止行号;
left:所选区域的开始列号;
right:所选区域的结束列号。

Qt下QTableWidget 基本用法相关推荐

  1. Qt下QTableWidget的使用

    1.QTableWidget的基本设置 ui->tableWidget->setColumnCount(11); ui->tableWidget->setRowCount(Nu ...

  2. Qt下使用vs编译的库文件

    Qt下调用VS制作的静态库    1.制作静态库的编译器和Qt版本的编译器是一样     如果是使用Visual Studio 制作的静态库,比如使用Visual Studio 2013制作的,而要使 ...

  3. Qt QLineEdit单行输入框用法详解

    Qt QLineEdit单行输入框用法详解 QLineEdit 是 Qt 提供的一个控件类,它直接继承自 QWdiget 类,专门用来创建单行输入框,如下图所示: 图 1 单行文本输入框 实际开发中, ...

  4. Qt QListWidget列表框用法详解

    Qt QListWidget列表框用法详解 很多应用程序中需要以列表的形式向用户展示数据(资源),比如 Windows 操作系统会以列表的方式展示很多张桌面背景图(如图 1a) 所示),再比如很多音乐 ...

  5. Qt中QMessageBox的用法---看这一篇就够了

    一.详细说明 QMessageBox类提供一个模态对话框,用于通知用户或询问用户一个问题并接收答案. 消息框显示一个主要文本,用于向用户提示某个情况;显示一个信息文本,用于进一步解释警报或向用户询问问 ...

  6. linux+Qt 下利用D-Bus进行进程间高效通信的三种方式

    linux+Qt 下利用D-Bus进行进程间高效通信的三种方式 原文链接: https://www.cnblogs.com/wwang/archive/2010/10/27/1862552.html ...

  7. Qt下一行代码就可以使用的稳定易用的日志log类

    Qt下一行代码就可以使用的稳定易用的日志类 此日志类是基于Qt 自带的 扩展的一个易用的日志类, 使用的是Qt自带的日志输出形式, 已长期运行在许多实际项目中,稳定可靠,而且跨平台, 在windows ...

  8. shell下的seq用法

    linux下seq的用法: 它有三个选项 -f, --format=FORMAT      use printf style floating-point FORMAT (default: %g) - ...

  9. linux下svn的用法(转)

    linux下svn的用法 2008-10-30 17:12:56 标签:linux svn 用法 [推送到技术圈] 来源:http://zhoutao.blog.51cto.com/425866/10 ...

最新文章

  1. 【文档】七、Mysql Binlog不同事件类型的事件内容
  2. 解码大脑:在脑机接口上寻求稳定性
  3. win10系统下cmd输入一下安装的软件命令提示拒绝访问解决办法
  4. Spring-AOP 通过配置文件实现 环绕增强
  5. python交互式和文件式区别_Python中的交互式数据可视化与Bokeh(系列五)
  6. vue3源码中的最长递增子序列
  7. 软件连接oracle失败怎么办,【编程开发工具】navicat连接oracle失败怎么办
  8. mongoose中的populate之多级填充,嵌套字段填充?
  9. [前端随笔][css] 弹性布局
  10. vc6 设置静态文本框透明_微信还能这么玩?半透明的微信背景主题用起来!
  11. java静态方法求n,java之静态属性和静态方法
  12. 彼得·林奇的 PEG 估值策略
  13. 抱歉,我又可以了。。。
  14. JPA ObjectDeletedException: deleted instance passed to merge
  15. 交换机与路由器技术:静态路由配置和路由器上配置DHCP、虚拟局域网VLAN
  16. E20170513-hm
  17. 印度市场救不了苹果手机,也救不了库克
  18. 数据推荐 | 自然对话语音数据集
  19. sqlserver实现只查询一条数据
  20. 2022最新网络安全零基础学习路线

热门文章

  1. .Net Core 文件的上传下载
  2. 2022年全国最新中级消防设施操作员模拟题库及答案
  3. Data (Privacy) Regulation 数据隐私法规整理
  4. 数据结构——二叉树交换左右子树位置(C语言)
  5. 小狐狸对于个人职业规划的思考
  6. 行业沙龙第六期丨数字化采购寻源,实现阳光采购
  7. 《财富》杂志评选的75本必读的最睿智的图书
  8. Oracle设置主键报错 ORA-02437: 无法验证 (DENGCHAO.TEST) - 违反主键
  9. Tomb.Finance的每周更新(5.2-5.8)
  10. 【思维导图】巩固你的JavaScript知识体系