添加功能
1、设置单元格文本居中
2、添加自定义按钮
3、设置指定行、列不可编辑
代码展示
from PyQt5 import QtWidgets, QtCore
from PyQt5.QtCore import pyqtSignal, Qt
from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem, QItemDelegate
from switchbtn import SwitchBtn
class MyTableWidget(QTableWidget):
switch_sig = pyqtSignal(list)
def __init__(self, parent=None):
super().__init__(parent)
# 单元格文本居中(行,列,内容)
def con_center(self, row, col, item_str):
newItem = QTableWidgetItem(item_str)
newItem.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
self.setItem(row, col, newItem)
# 添加状态按钮
def add_switchbtn(self, row, col):
check_btn = SwitchBtn()
check_btn.checkedChanged.connect(self.checkChanged)
self.setCellWidget(row, col, check_btn)
# 发送状态按钮信号
def checkChanged(self):
check_box = self.sender()
ix = self.indexAt(check_box.pos())
row, col, is_checked = ix.row(), ix.column(), check_box.checked
self.switch_sig.emit([row, col, is_checked])
# 设置列不可编辑
def col_enabled(self, col):
self.setItemDelegateForColumn(col, EmptyDelegate(self))
# 设置行不可编辑
def row_enabled(self, row):
self.setItemDelegateForRow(row, EmptyDelegate(self))
class EmptyDelegate(QItemDelegate):
def __init__(self, parent):
super().__init__(parent)
def createEditor(self, QWidget, QStyleOptionViewItem, QModelIndex):
return None
switchbtn.py
链接:switchbtn.py
from switchbtn import SwitchBtn # 点击跳转链接查看switchbtn.py