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行选中/删除/添加行的更多相关文章

  1. java 在循环中删除数组元素

    在写代码中经常会遇到需要在数组循环中删除数组元素的情况,但删除会导致数组长度变化. package com.fortunedr.thirdReport; import java.util.ArrayL ...

  2. JavaScript从数组中删除指定值元素的方法

    本文实例讲述了JavaScript从数组中删除指定值元素的方法.分享给大家供大家参考.具体分析如下: 下面的代码使用了两种方式删除数组的元素,第一种定义一个单独的函数,第二种为Array对象定义了一个 ...

  3. sql语句中----删除表数据drop、truncate和delete的用法

    sql语句中----删除表数据drop.truncate和delete的用法 --drop drop table  tb   --tb表示数据表的名字,下同 删除内容和定义,释放空间.简单来说就是把整 ...

  4. javascript中的链表结构—从链表中删除元素

    1.概念 上一个博文我们讲到链表,其中有一个方法remove()是暂时注释的,这个方法有点复杂,需要添加一个Previous()方法找到要删除的元素的前一个节点,这一个博文我们来分析一下这个remov ...

  5. 遍历List过程中删除元素的正确做法(转)

    遍历List过程中删除元素的正确做法   public class ListRemoveTest {     3 public static void main(String[] args) { 4 ...

  6. NHibernate 中删除数据的几种方法

    今天下午有人在QQ群上问在NHibernate上如何根据条件删除多条数据,于是我自己就写了些测试代码,并总结了一下NHibernate中删除数据的方式,做个备忘.不过不能保证囊括所有的方式,如果还有别 ...

  7. 【译】在ASP.Net和IIS中删除不必要的HTTP响应头

    引入 每次当浏览器向Web服务器发起一个请求的时,都会伴随着一些HTTP头的发送.而这些HTTP头是用于给Web服务器提供一些额外信息以便于处理请求.比如说吧.如果浏览器支持压缩功能,则浏览器会发送A ...

  8. 解决Maven项目编译时提示:源值1.5已过时,将在未来所有版本中删除

    每次编译项目时,都提示:源值1.5已过时,将在未来所有版本中删除 查了一些资料,发现是因为IDEA默认把项目的源代码版本设置为jdk1.5,目标代码设置为jdk1.5 解决方案:  修改Maven的S ...

  9. Java中删除文件、删除目录及目录下所有文件(转)

    原文链接:Java中删除文件.删除目录及目录下所有文件 知识点:File.delete()用于删除“某个文件或者空目录”!所以要删除某个目录及其中的所有文件和子目录,要进行递归删除,具体代码示例如下: ...

随机推荐

  1. POOL_TYPE enumeration

    typedef enum _POOL_TYPE { NonPagedPool, NonPagedPoolExecute                   = NonPagedPool, PagedP ...

  2. ABP理论学习之实体类

    返回总目录 本篇目录 实体类 惯例接口 审计 软删除 激活/未激活 IEntity接口 实体是DDD(领域驱动设计)的核心概念之一.Eirc Evans是这样描述的实体的:"它根本上不是通过 ...

  3. C++11 并发指南七(C++11 内存模型一:介绍)

    第六章主要介绍了 C++11 中的原子类型及其相关的API,原子类型的大多数 API 都需要程序员提供一个 std::memory_order(可译为内存序,访存顺序) 的枚举类型值作为参数,比如:a ...

  4. 【数据结构】平衡二叉树—AVL树

    (百度百科)在计算机科学中,AVL树是最先发明的自平衡二叉查找树.在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树.查找.插入和删除在平均和最坏情况下都是O(log n).增 ...

  5. Nova PhoneGap框架 第二章 理解index.html

    跟绝大多数PhoneGap程序一样,Index.html是程序的入口.这个页面应该完成应用程序的初始化工作. 首先,让我们来看看这个页面通常都长什么样子: 下面我将一一解释这个页面都做了哪些初始化工作 ...

  6. Python黑帽编程1.3 Python运行时与包管理工具

    Python黑帽编程1.3  Python运行时与包管理工具 0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Attack and ...

  7. 作业三: 代码规范、代码复审、PSP

    分) 对于是否需要有代码规范,请考虑下列论点并反驳/支持: 这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 我是个艺术家,手艺人,我有自己的规范和原则. 规范不能 ...

  8. 注册OCX失败

    今天注册某个OCX时,Windows报告以下错误: 模块“XXX.ocx”已加载,但对 DllRegisterServer 的调用失败,错误代码为 0x80040200. 这是Windows权限引起的 ...

  9. TDR分辨率

    在日常的生活工作中,有很多测试测量的工具,比如测量长度的尺子,计量时间的钟表等等,谈到测试测量工具的时候,分辨率是关键指标之一,比如尺子的 分辨率是1mm,时钟的分辨率是秒.所谓分辨率就是测试测量工具 ...

  10. distribution 中一直在运行 waitfor delay @strdelaytime 语句

    Replication 自动创建来一个 Job:Replication monitoring refresher for distribution,这个Agent执行一个sp: dbo.sp_repl ...