QTableWidget行选中/删除/添加行
1 均分各列
- tableWidget->horizontalHeader()->setStretchLastSection(true); //就是这个地方
- tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
2 整行选中:
- tableWidget->setSelectionBehavior ( QAbstractItemView::SelectRows); //设置选择行为,以行为单位
- tableWidget->setSelectionMode ( QAbstractItemView::SingleSelection); //设置选择模式,选择单行
3 删除选中的整行
- int rowIndex = m_pAttrbuteList->currentRow();
- if (rowIndex != -)
- tableWidget->removeRow(rowIndex);
为了将数据能够在界面中显示的更清楚一些,在这里应用到了tableWidget控件,现将该控件中删除指定行的代码介绍如下:
QTable里有一个removeRow(int i)函数用来删除当前行,但是如果我们没有对于table进行任何的选中,那么QTable是如何返回的呢?
用Qt Creator里拖了一个tableWidget,加一个按钮,点击删除后执行
- int i = ui->tableWidget->currentRow();
- QMessageBox msg;
- msg.setText(QString::number(i));
- msg.exec();
- ui->tableWidget->removeRow(i);
在不选择行的情况下发现每次点击后删除的都是第一行,i的输出都是0.
原因其实很简单,就是因为table的当前焦点在第一样的第一个单元格所导致的,解决的办法就是让table失去焦点,在构造函数里面添加ui->tableWidget->setFocusPolicy(Qt::NoFocus);
然后再试,发现点击删除按钮如果不选中行的话是不能删除的,返回的i此时是-1。
控件刚开始的时候左边默认自带序列号,如果想去掉左边的行号,加上下面的代码就可以了。
- QHeaderView* headerView = table的名字->verticalHeader();
- headerView->setHidden(true);
4 添加整行
- int rowIndex = m_pAttrbuteList->rowCount();
- tableWidget->setRowCount(rowIndex + );//总行数增加1
- tableWidget->setRowHeight(rowIndex, );//设置行的高度
- --------------------------------------------------------------------------------
- QTableWidget *table = new QTableWIdget(this);
- table->setColumnCount(); //设置列数
- table->setRowCount(); //设置行数/
- /*设置列名*/
- QStringList headers;
- headers<<"列名1"<<"列名2"<<"列名3";
- table->setHorizontalHeaderLabels(headers);
- /*给单元格添加内容*/
- void addItemContent(int row, int column, QString content)
- {
- QTableWidgetItem *item = new QTableWidgetItem (content);
- table->setItem(row, column, item);
- }
- /*给单元格中增加图标*/
- QTableWidgetItem *item = new QTableWidgetItem(QIcon("myImage.jpg"), NULL); //只加入图标,没有字符串
- QTableWidgetItem *item = new QTableWidgetItem(QIcon("myImage.jpg"), myString); //加入图标和字符串
- table->setItem(row, column, item);
- /*插入一行*/
- int row = table->rowCount();
- table->insertRow(row);
- /*插入一列*/
- int column = table->columnCount();
- table->insertColumn(column);
- //使行列头自适应宽度,最后一列将会填充空白部分
- table->horizontalHeader()->setStretchLastSection(true);
- //使行列头自适应宽度,所有列平均分来填充空白部分
- table->horizontalHeader()->setResizeMode(QHeaderView::Strtch);
- //使行自适应高度,假如行很多的话,行的高度不会一直减小,当达到一定值时会自动生成一个QScrollBar
- table->verticalHeader()->setResizeMode(QHeaderView::Strtch);
- //设置单击选择一行
- table->setSelectionBehuavior(QAbstractItemView::SelectRows);
- //设置每行内容不可编辑
- table->setEditTriggers(QAbstractItemView::NoEditTriggers);
- //设置只能选择一行,不能选择多行
- table->setSelectionMode(QAbstractItemView::SingleSelection);
- /*去掉每行的行号*/
- QHeaderView *headerView = table->verticalHeader();
- headerView->setHidden(true);
- /*设置让某个单元格或某行选中*/
- 选中单元格:table->setCurrentCell(row, column, QItemSelectionModel::Select);
- 选中一行:table->setCurrentCell(row, QItemSelectionModel::Select);(注意此处的列没有值)
QTableWidget行选中/删除/添加行的更多相关文章
- java 在循环中删除数组元素
在写代码中经常会遇到需要在数组循环中删除数组元素的情况,但删除会导致数组长度变化. package com.fortunedr.thirdReport; import java.util.ArrayL ...
- JavaScript从数组中删除指定值元素的方法
本文实例讲述了JavaScript从数组中删除指定值元素的方法.分享给大家供大家参考.具体分析如下: 下面的代码使用了两种方式删除数组的元素,第一种定义一个单独的函数,第二种为Array对象定义了一个 ...
- sql语句中----删除表数据drop、truncate和delete的用法
sql语句中----删除表数据drop.truncate和delete的用法 --drop drop table tb --tb表示数据表的名字,下同 删除内容和定义,释放空间.简单来说就是把整 ...
- javascript中的链表结构—从链表中删除元素
1.概念 上一个博文我们讲到链表,其中有一个方法remove()是暂时注释的,这个方法有点复杂,需要添加一个Previous()方法找到要删除的元素的前一个节点,这一个博文我们来分析一下这个remov ...
- 遍历List过程中删除元素的正确做法(转)
遍历List过程中删除元素的正确做法 public class ListRemoveTest { 3 public static void main(String[] args) { 4 ...
- NHibernate 中删除数据的几种方法
今天下午有人在QQ群上问在NHibernate上如何根据条件删除多条数据,于是我自己就写了些测试代码,并总结了一下NHibernate中删除数据的方式,做个备忘.不过不能保证囊括所有的方式,如果还有别 ...
- 【译】在ASP.Net和IIS中删除不必要的HTTP响应头
引入 每次当浏览器向Web服务器发起一个请求的时,都会伴随着一些HTTP头的发送.而这些HTTP头是用于给Web服务器提供一些额外信息以便于处理请求.比如说吧.如果浏览器支持压缩功能,则浏览器会发送A ...
- 解决Maven项目编译时提示:源值1.5已过时,将在未来所有版本中删除
每次编译项目时,都提示:源值1.5已过时,将在未来所有版本中删除 查了一些资料,发现是因为IDEA默认把项目的源代码版本设置为jdk1.5,目标代码设置为jdk1.5 解决方案: 修改Maven的S ...
- Java中删除文件、删除目录及目录下所有文件(转)
原文链接:Java中删除文件.删除目录及目录下所有文件 知识点:File.delete()用于删除“某个文件或者空目录”!所以要删除某个目录及其中的所有文件和子目录,要进行递归删除,具体代码示例如下: ...
随机推荐
- actor concurrency
The hardware we rely on is changing rapidly as ever-faster chips are replaced by ever-increasing num ...
- [转]ios push
转:http://blog.csdn.net/showhilllee/article/details/8631734 APNS的推送机制 首先我们看一下苹果官方给出的对ios推送机制的解释.如下图 P ...
- 用.NET MVC实现长轮询,与jQuery.AJAX即时双向通信
两周前用长轮询做了一个Chat,并移植到了Azure,还写了篇博客http://www.cnblogs.com/indream/p/3187540.html,让大家帮忙测试. 首先感谢300位注册用户 ...
- Hystrix框架3--线程池
线程池 在Hystrix中Command默认是运行在一个单独的线程池中的,线程池的名称是根据设定的ThreadPoolKey定义的,如果没有设置那么会使用CommandGroupKey作为线程池. 这 ...
- Objective-C 原型模式 -- 简单介绍和使用
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建 ...
- php单条件查询,关键字查询
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Nginx负载均衡的详细配置及使用案例详解.
感谢看过这一些列博文和评论的小伙伴, 我把自己所看到的学到的拿到这里来分享是想和大家一起学习进步, 想听听园友给出的意见, 也是对自己学习过程的一个总结. 技术无止境, 我们仍需努力! 1,话不多说, ...
- 导入镜像文件,分区启动liunx
1:更改虚拟机配置 2:导入系统镜像 3:启动虚拟机,选择第一个选项回车 4:这里问你是否检查镜像,我们的镜像肯定没问题不需要检查,点击Skip 5:语言选择,按提示默认下一步 6:主机名也默认 7: ...
- SSIS 数据类型和类型转换
在进行ETL开发时,数据类型(Data Type)是最基础的,但也容易被忽略,楼主使用的SQL Server 版本是2012,用此博文记录,常用的SSIS数据类型和TSQL数据类型的映射.SSIS的数 ...
- 如何变相的绕过QQ邮箱订阅的繁琐核审
先看看正常流程:http://open.mail.qq.com/ 点击“接入订阅”==>申请接入==>登录一下 选择接入完全免费 大概流程就是这样: 下面我们说说快速接入的方法: 1.登录 ...