QTableWidget基本功能总结(转)

http://edsionte.com/techblog/archives/3014

http://www.cuteqt.com/bbs/viewthread.php?tid=4213

1、表格表头。
表格表头可以靠horizontalHeader()以及verticalHeader()这两个成员函数获取,这两个函数来自于QTableWidget的父类QTableView,得到的返回值类型是QHeaderView*。
通过获得表头还可以对表格的拉伸进行设置。相关的函数均来自于QHeaderView:setStretchLastSection()、sectionAutoResize()、setResizeMode()。
表头的文字则可以由setHorizontalHeaderLabels()、以及setVerticalHeaderLabels()来设置。
如果你想要使用一个自定义的表头类,则可以使用setVerticalHeaderItem()、setHorizontalHeaderItem()来进行设置。

2、表格的数据设置与排序。
QTableWidget允许多种数据类型的设置,理论上来说只要是QVariant能够接受的类型,都可以作为表格的内容来呈现。一般的文字信息采用setText()来设置,而如果是其他类型,比如int,则需要使用setData()来设置。注意,这两个函数都是QTableWidgetItem提供的。如果没有前导0这样的特殊需求,推荐使用setData()而不是setText(QString::number())的方式来设置数值,因为这样将导致数字类型的数据在排序时出现10比2优先的情况。另外,在重复设置数据的时候,可能表格原有的行数或列数已不满足现有的需求,那么可以使用clearContents()清空表格的所有内容(包括行数与列数)。如果有谁需要只读的表格(拒绝双击进行数据编辑),那么可以试试QTableWidgetItem的setFlags()进行操控,只要不设置可编辑标识即可。
而至于排序,只需要使用setSortingEnabled()或者sortByColumn()来开启。需要注意的是,如果在排序开启后需要增加数据,应该先关闭排序再增加数据,之后再重新开启排序,否则由于排序的干扰,数据的增加将产生问题。如果希望进行一个自定义的排序(既不是基于字母,也不是基于数字大小),那么尝试继承QTableWidgetItem并重新实现operator<()函数将起到不小的作用。
如果你的用户希望对表格进行一定程度的动态过滤,不要重新读取数据,setRowHidden()以及setColumnHidden()是个不错的选择。

原文地址:https://www.cnblogs.com/daidaigua/p/2455139.html