QAbstractTableModel选中单元格就会触发setdata()

在这里插入图片描述
选中单元格就会触发setdata()

bool MissionModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
    if(!index.isValid())
        return false;
    亮点1
 //鼠标选中的单元格是哪行哪列,3行5列
    int row = index.row();
    int col = index.column();
   
   亮点2 
       //把改行第1个,第4个单元格数据取出来
    QModelIndex m_index_name = this->index(row,1);
    QModelIndex m_index_color = this->index(row,4);
    
    QVariant missionName = this->data(m_index_name);
    QVariant missionColor = this->data(m_index_color);

    亮点3
	//如果点中了第2列的checkbox
    if (role == Qt::CheckStateRole && col == 2 )
    {
    	//比如第1行,2列。1号发动机温度
    	value是单元格的内容,有时候是数字,字母,字符串,bool
        QJsonObject obj = dataList[row].toObject();
        obj[headtitle.at(col)] = value == Qt::Checked;
        dataList[row] = obj;

		//实时关注如果为真,就发信号告诉其他地方
        if(obj[headtitle.at(2)].toBool() == true)
        {
        	
            emit missionFollow_send(missionName, missionColor);
            return true;
        }
        //把修改的内容存到json文件
        if( !JsonTool::save_json_file<QJsonArray>(file_name, dataList) )
        {
            QMessageBox::information( nullptr, QStringLiteral("修改失败"), QStringLiteral("修改失败"));
        }
    }
    else if (role == Qt::CheckStateRole && col == 3 )
    {
        QJsonObject obj = dataList[row].toObject();
        obj[headtitle.at(col)] = value == Qt::Checked;
        dataList[row] = obj;

        if(obj[headtitle.at(2)].toBool() == true)
        {
            emit namePlate_show(missionName);
            return true;
        }
        if( !JsonTool::save_json_file<QJsonArray>(file_name, dataList) )
        {
            QMessageBox::information( nullptr, QStringLiteral("修改失败"), QStringLiteral("修改失败"));
        }
    }
    return true;
}

在这里插入图片描述
在这里插入图片描述

图1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值