def add_table_row(mainwindow, chn, trx, id, SendType, RemoteFlag, ExternFlag, length, data_hex, SID = -1, subFlag = "", time="-1", list_index = 0, CF_flag = 0):
#
print("CF_flag1:", CF_flag)
print("list_index:", list_index)
#
#SID是10进制数字
#id是0X开头的16进制字符串
#获取新行的位置,table的行下标从0开始
if len(mainwindow.FilterIDList) == 0 or ( int(id, 16) in mainwindow.FilterIDList):
time = get_now_time()
#向data_hex后填充0,凑齐23个字符
# 将字符串分割成每两个字符一组
hex_list = data_hex.split()
if len(hex_list[-1]) < 2:
hex_list[-1] += "0"
# 计算需要补充的组数
num_groups_to_add = 8 - len(hex_list)
# 补充0到列表中
hex_list.extend(['00'] * num_groups_to_add)
# 将列表重新组合成字符串,每组之间有一个空格
formatted_hex_str = ' '.join(hex_list)
SID_str = hex(SID).upper()[2:]
#
#构造新行的内容
# items = [SID_str + " " + subFlag + CF_flag_str, time, chn, trx, id + " " + str(list_index), SendType, RemoteFlag, ExternFlag, length, formatted_hex_str]
# new 0722
items = [SID_str + " " + subFlag, time, chn, trx, id + " " + str(list_index), SendType, RemoteFlag, ExternFlag, length, formatted_hex_str, CF_flag, ""]
print("CF_flag2:", CF_flag)
# CF_flag = 1
if CF_flag == 0:
print("yes")
print("CF_flag3:", CF_flag)
mainwindow.right_layout_object.table_view.setItemDelegateForColumn(11, ButtonDelegate())
# 调用模型添加行
mainwindow.right_layout_object.model.add_row(items)
mainwindow.right_layout_object.table_view.scrollToBottom()
中怎么把变量CF_flag传入
class ButtonDelegate(QStyledItemDelegate):
# 按钮按下信号
buttonClicked = Signal(int)
# paint提供绘制功能
def paint(self, painter, option, index):
cf_flag_index = index.siblingAtColumn(10)
cf_flag = cf_flag_index.data(Qt.DisplayRole)
# 判断cf_flag 为0时则绘制按钮
if cf_flag == 0:
button_option = QStyleOptionButton()
button_option.rect = option.rect.adjusted(4, 4, -4, -4)
button_option.text = "解析"
button_option.state = QStyle.StateFlag.State_Enabled
QApplication.style().drawControl(QStyle.ControlElement.CE_PushButton, button_option, painter)
else:
super().paint(painter, option, index)
def editorEvent(self, event, model, option, index):
# 处理鼠标点击事件
if event.type() == QEvent.MouseButtonRelease:
# 获取同一行第10列(索引9)的数据
cf_flag_index = index.siblingAtColumn(10)
cf_flag = cf_flag_index.data(Qt.DisplayRole)
# 判断cf_flag 为0时则允许触发按钮
if cf_flag == 0:
# 计算按钮区域
button_rect = option.rect
# button_rect.setWidth(self.button_width)
# button_rect.setHeight(self.button_height)
button_rect.moveCenter(option.rect.center())
# 如果点击在按钮区域内
if button_rect.contains(event.pos()):
row_data = model._data[index.row()]
self.open_analysis_window(row_data)
# self.buttonClicked.emit(index.row())
return True # 表示已处理
return super().editorEvent(event, model, option, index)
中
最新发布