QtableWidget用法流程

​ 作者:流火 日期:2020/5/10

QTableWidget的基本构造函数

QTableWidget 是QTableview的子类。主要去呗是QTableView 可以使用自定义的数据

模型来显示内容,也就是先要通过setModel来绑定数据源。而Qtablewidget则只是能通过标准的数据模型,并且单元格数据是QTableWidgetItem的对象来实现的也就是不需要数据源,将逐个单元格内的信息填好即可。

构造函数以及基本设置:

QTableWidget *tablewidget = new QTableWidget(10,5);//创建一个QTableWodget对象,有10行五列
//还可以
QTableWidget *tablewidget = new QTableWidget();
tw->setRowCount(10);//设置行数
tw->setColumnCount(5);//设置列数
tw->setWindowTitle("QTableWidget & item");//设置窗口标题
tw->resize(350,200);//重新设置大小
QStringList header;//QStringList 类似一个QString数组
header<<"month"<<"description";//<< 是一个重载符,作用类似于vector中的push_back,往数组最后添加QString元素
tw->setHorizontalHeaderLabels(header);//设置水平的头标签
//seiItem 是用来设置QtableWidget 各个单元格。单元格从(0,0)开始。
//参数共有三个,前面是两个分别是坐标x,y后面是单元格对象
//QTableWidgetItem是QTableWidget单元格对象。
tw->setItem(0,0,new QTableWidgetItem("jan"));
tw->setItem(0,1,new QTableWidgetItem("janmonth"));

最后效果:

对QTableWidget本身的实现

  1. 将表格变为禁止编辑
tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
QAbstractItemView::NoEditTriggers  0  不能对表格内容进行修改
QAbstractItemView::CurrentChanged 1 任何时候都能对单元格修改
QAbstractItemView::DoubleClicked 2 双击单元格
QAbstractItemView::SelectedClicked 4 单击已选中的内容
QAbstractItemView::EditKeyPressed 8 Editing starts when the platform edit key has been pressed over an item.
QAbstractItemView::AnyKeyPressed 16 按下任意键就能修改
QAbstractItemView::AllEditTriggers 31 以上条件全包括
  1. 设置表格为整行选择

    tw->setSelectionBehavior(QAbstractITemView::ExtendedSelection);
    //设置为可以选择多个目标
    Constant  Value  Description
    QAbstractItemView::SelectItems 0 Selecting single items.选中单个单元格
    QAbstractItemView::SelectRows 1 Selecting only rows.选中一行
    QAbstractItemView::SelectColumns 2 Selecting only columns.选中一列
  2. 单个选中和多个选中

tw->setSelectionMode(QAbstracItemView::ExtendedSelecttion);//设置为多个选中

参数还有:

QAbstractItemView::NoSelection 不能选择

QAbstractItemView::SingleSelection 选中单个目标

QAbstractItemView::MultiSelection 选中多个目标

QAbstractItemView::ExtendedSelection QAbstractItemView::ContiguousSelection 的区别不明显,主要功能是正常情况下是单选,但按下Ctrl或Shift键后,可以多选
  1. 表格表头的显示与隐藏

​ 对于水平胡垂直方法的表头,可以用以下方式进行 隐藏/显示 的设置。注意:必须包含#include

tableWidget->verticalHeader()->setVisible(false); //隐藏列表头
tableWidget->horizontalHeader()->setVisible(false); //隐藏行表头
  1. 对表头文字的字体,颜色进行设置 注意:需要#include
//获得水平方向表头的Item对象
QTableWidgetItem *item1 = tableWidget->horizontalHeaderItem(0);
item1->setFont(QFont(字体名称));//设置字体样式
item->setBackgroundColor(QColor(0,60,10));//设置单元格背景颜色 注意会显示过期在qt5
item->setTextColor(QColor(QColor::Red));//设置字体颜色会显示过期
  1. 单元格里添加控件

QTableWidget允许把控件也放到单元格中。比如下拉框

QComboBox *comBox = new QComboBox();
comBox->addItem("Y");
comBox->addItem("N");
tableWidget->setCellWidget(0,2,comBox);

单元格的设置

  1. 单元格设置字体颜色和背景颜色;
QTableWidgetItem *item = new QTableWidgetItem("Apple");
item->setBackgroundColor(QColor(0,60,10)); //蛇者背景颜色
item->setTextColor(QColor(200,111,100)); //设置颜色字体
item->setFont(QFont("Helvetica")); //设置文字字体
tableWidget->setItem(0,3,item); //让某个单元格应用
  1. 设置单元格内文字的对齐方式
//先定义个QtablewidgetItem对象
QTablewidgetItem 8item = new QTableWidgetItem();
ite.setTextAlignment(Qt.AlignLeft);//设置左对齐
//水平对齐方式
Constant Value Description
Qt.AlignLeft 0x0001 Aligns with the left edge.
Qt.AlignRight 0x0002 Aligns with the right edge.
Qt.AlignHCenter 0x0004 Centers horizontally in the available space.
Qt.AlignJustify 0x0008 Justifies the text in the available space.
//垂直对齐方式
Constant Value Description
Qt.AlignTop 0x0020 Aligns with the top.
Qt.AlignBottom 0x0040 Aligns with the bottom.
Qt.AlignVCenter 0x0080 Centers vertically in the available space.

如果两种都要设置,只需要将一个符号‘|’。只能是一个垂直一个水平,不能是相同的方向

  1. 合并单元格
tableWidget->setSpan(0, 0, 3, 1);
//参数的意思是从0行到3行(不包括三行)0列到1列(不包括一列)合并成一个单元格
  1. 设置单元格的大小

    首先,可以指定某个行或者列的大小

    tableWidget->setColumnWidth(3,200);
    tableWidget->setRowHeight(3,60);

    还可以将行和列的大小设为与内容相匹配

tableWidget->resizeColumnsToContents();
tableWidget->resizeRowsToContents();
  1. 获得单元格内容

通过实现 itemClicked(QTableWidgetItem *)信号的槽函数获取鼠标单击到的单元格的指针进而获得其中的文字信息

connect(tableWidget,SIGNAL(itemClicked(QTreeWidgetItem*)),this, SLOT( getItem(QTreeWidgetItem*)) );

QtableWidget用法流程的更多相关文章

  1. {Repeater控件} Repeater控件的用法流程及实例

    一.Repeater控件的用法流程及实例: 1.首先建立一个网站,新建一个网页index.aspx. 2.添加或者建立APP_Data数据文件,然后将用到的数据库文件放到APP_Data文件夹中. 3 ...

  2. ajax用法流程

    这里是用javascript做的一个ajax的一个用法以及总结概括.供友友们进行参考. 1 window.onload=function() { var oBtn=document.getElemen ...

  3. QTableWidget 用法总结(只能使用标准的数据模型,并且其单元格数据是QTableWidgetItem的对象)

    QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC.C#中的DataGrid.说到QTableWidget,就必须讲一下它跟QTabelView的区别了.QTableWidge ...

  4. Qt QTableWidget用法总结

    转载:李宏兵 QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC.C#中的DataGrid.说到QTableWidget,就必须讲一下它跟QTabelView的区别了. QTa ...

  5. Qt中 QTableWidget用法总结

    转自--> http://edsionte.com/techblog/archives/3014 http://hi.baidu.com/fightiger/item/693aaa0f0f87d ...

  6. 关于jquery.fileupload结合PHP上传图片的开发用法流程

    这阵子做了一个项目,涉及到了图片上传,以往用的都是uploadify这个插件,感觉它在PC上的使用还是很强大的, 不过最近这个项目涉及到了移动端的上传,其实uploadify也可以,但是他有一个 up ...

  7. git 命令用法 流程操作

    Git 是一款免费的.开源的.分布式的版本控制系统.旨在快速高效地处理无论规模大小的任何软件工程. 每一个 Git克隆 都是一个完整的文件库,含有全部历史记录和修订追踪能力,不依赖于网络连接或中心服务 ...

  8. ASP.NET-----Repeater数据控件的用法总结(转)

    一.Repeater控件的用法流程及实例: 1.首先建立一个网站,新建一个网页index.aspx. 2.添加或者建立APP_Data数据文件,然后将用到的数据库文件放到APP_Data文件夹中. 3 ...

  9. [转载]ASP.NET-----Repeater数据控件的用法总结

    一.Repeater控件的用法流程及实例: 1.首先建立一个网站,新建一个网页index.aspx. 2.添加或者建立APP_Data数据文件,然后将用到的数据库文件放到APP_Data文件夹中. 3 ...

随机推荐

  1. ionic3跳转页面的方法

    ionic3很好很强大,有人喷有人赞.不想参与其中,个人认为如果能很好的满足需求,好坏都是无所谓的,最合适的才是最好的.总结下最近使用ionic3的一些知识点,方便以后查询.多句嘴:会ionic3和只 ...

  2. Java实现 蓝桥杯 算法提高 歌唱比赛(暴力)

    试题 算法提高 歌唱比赛 问题描述 X市正在进行歌唱比赛,请你写一个程序计算得分. 每名选手从1到N编号,每名选手的综合成绩由以下几个部分组成: 1.歌唱得分占70% 2.才艺展示得分占20% 3.观 ...

  3. Java实现 LeetCode 565 数组嵌套(没有重复值的数组)

    565. 数组嵌套 索引从0开始长度为N的数组A,包含0到N - 1的所有整数.找到并返回最大的集合S,S[i] = {A[i], A[A[i]], A[A[A[i]]], - }且遵守以下的规则. ...

  4. Java实现 LeetCode 467 环绕字符串中唯一的子字符串

    467. 环绕字符串中唯一的子字符串 把字符串 s 看作是"abcdefghijklmnopqrstuvwxyz"的无限环绕字符串,所以 s 看起来是这样的:"-zabc ...

  5. java实现第九届蓝桥杯三角形面积

    三角形面积 小明最近在玩一款游戏.对游戏中的防御力很感兴趣. 我们认为直接影响防御的参数为"防御性能",记作d,而面板上有两个防御值A和B,与d成对数关系,A=2^d,B=3^d( ...

  6. Python:求时间差(天时分秒格式)

    传入一个时间戳,以天时分秒格式打印出时间差 输入一个10位的时间戳,求出时间差 def time_diff(timestamp): onlineTime = datetime.datetime.fro ...

  7. 从程序员到项目主管再到项目总监,一个IT从业者三个职业生涯阶段的工作生活日常

    这是王不留的第 8 篇原创文章 前段时间写过<王不留的十多年工作和生活的流水帐>,在知乎.简书,还有不少微信的朋友私信问我每天四点钟是如何做到的?你现在的作息时间是怎么安排的? 于是,我将 ...

  8. 经典文本特征表示方法: TF-IDF

    引言 在信息检索, 文本挖掘和自然语言处理领域, IF-IDF 这个名字, 从它在 20 世纪 70 年代初被发明, 已名震江湖近半个世纪而不曾衰歇. 它表示的简单性, 应用的有效性, 使得它成为不同 ...

  9. 为什么zookeeper的节点配置的个数必须是奇数个

    选举机制(FastLeaderElection算法):sid最大且被超过集群中超过半数的机器拥护就会成为leader.所以只有两种情况无法选出leader:整个集群只有2台服务器(注意不是只剩2台,而 ...

  10. 基于ABP做一个简单的系统——实战篇:1.项目准备

    现阶段需要做一个小项目,体量很小,业务功能比较简单,就想到用最熟悉的.net来做,更何况现在.net core已经跨平台,也可以在linux服务器上部署.所以决定用.net core 3.1+mysq ...