QT tableWidget 使用笔记

1. 将表格变为禁止编辑

在默认情况下,表格里的字符是可以更改的,比如双击一个单元格,就可以修改原来的内容,如果想禁止用户的这种操作,让这个表格对用户只读,可以这样:

tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);

QAbstractItemView::NoEditTriggers是QAbstractItemView.EditTrigger枚举中的一个,都是触发修改单元格内容的条件:

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 以上条件全包括

2. 设置表格为整行选择
 

tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); //整行选中的方式

QAbstractItemView.SelectionBehavior枚举还有如下类型

Constant  Value  Description
QAbstractItemView::SelectItems  0  Selecting single items.选中单个单元格
QAbstractItemView::SelectRows  1  Selecting only rows.选中一行
QAbstractItemView::SelectColumns  2  Selecting only columns.选中一列

3.单个选中和多个选中的设置:
 

tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); //设置为可以选中多个目标
QAbstractItemView::NoSelection 不能选择

QAbstractItemView::SingleSelection 选中单个目标

QAbstractItemView::MultiSelection 选中多个目标

QAbstractItemView::ExtendedSelection QAbstractItemView::ContiguousSelection 的区别不明显,主要功能是正常情况下是单选,但按下Ctrl或Shift键后,可以多选

4. 表格表头的显示与隐藏

对于水平或垂直方法的表头,可以用以下方式进行 隐藏/显示 的设置:注意:需要 #include <QHeaderView>
 

tableWidget->verticalHeader()->setVisible(false); //隐藏列表头 
tableWidget->horizontalHeader()->setVisible(false); //隐藏行表头

5. 对表头文字的字体、颜色进行设置   注意:需要 #include <QHeaderView>

QTableWidgetItem *columnHeaderItem0 = tableWidget->horizontalHeaderItem(0); //获得水平方向表头的Item对象 
columnHeaderItem0->setFont(QFont("Helvetica")); //设置字体 
columnHeaderItem0->setBackgroundColor(QColor(0,60,10)); //设置单元格背景颜色 
columnHeaderItem0->setTextColor(QColor(200,111,30)); //设置文字颜色 

6. 在单元格里加入控件:

QTableWidget不仅允许把文字加到单元格,还允许把控件也放到单元格中。比如,把一个下拉框加入单元格,可以这么做

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

7、表头样式的设置

tableWidget->horizontalHeader()->setStyleSheet("QHeaderView::section{background-color: #BEBEBE;border:1px solid ;border-left:none;}");//表头样式设置
tableWidget->setAlternatingRowColors(true);//table奇偶行颜色交替设置
tableWidget->horizontalHeader()->setHighlightSections(false);//禁用表头选中塌陷

8、设置tableWidget和treeWidget列等宽

treeWidget->header()->setSectionResizeMode(QHeaderView::Stretch);//树列等宽

tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);//表格列表等宽

9、设置单元格字体颜色

item = QtWidgets.QTableWidgetItem(str(items[row][colum]))
item.setFlags(QtCore.Qt.ItemIsEnabled)
#item.setTextColor(QColor(200,111,30))
item.setForeground(QColor(255,255,255)) #设置Table内部字体颜色
发布了68 篇原创文章 · 获赞 34 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/yyj108317/article/details/102792745
今日推荐