QT开发中文网

协议里格式如下 map dev_task = 3; //任务数据。怎么每条压进tablewidget的一列,for(auto it=WCSMonitor_pb.wcs_info(i).dev_task().cbegin(); it!=WCSMonitor_pb.wcs_info(i).dev_task().cend(); it++) { QString data_task = QString:...

根据协议里的格式,dev_task 是一个由 int32string 组成的 map,即键值对集合。每个键值对包含一个任务号和其对应的 json 任务信息。

你的代码使用了迭代器遍历所有任务,并将其压入 tablewidget 的一列中。其中 i 代表行数,而 4+cloumn_size + 则代表列数。

如果你想要将每个键值对分别放置在不同的单元格中,需要修改该部分代码:

QString data_task = QString::number(it->first) + ":" + QString::fromStdString(it->second);
QTableWidgetItem* item_data_task = new QTableWidgetItem(data_task);
ui->tableWidget_agvDevice->setItem(i, 4+cloumn_size +, item_data_task);

改为:

int column_index = 4 + cloumn_size; // 列数
for (auto it = WCSMonitor_pb.wcs_info(i).dev_task().cbegin(); it != WCSMonitor_pb.wcs_info(i).dev_task().cend(); it++)
{
    // 获取任务号和json任务信息
    int task_id = it->first;
    std::string task_info_str = it->second;

    // 将json字符串转化为QJsonObject对象
    QJsonDocument json_doc = QJsonDocument::fromJson(QByteArray(task_info_str.c_str()));
    QJsonObject json_obj = json_doc.object();

    // 在tablewidget中创建新行并填充数据
    ui->tableWidget_agvDevice->insertRow(ui->tableWidget_agvDevice->rowCount());
    ui->tableWidget_agvDevice->setItem(i, column_index++, new QTableWidgetItem(QString::number(task_id)));
    ui->tableWidget_agvDevice->setItem(i, column_index++, new QTableWidgetItem(json_obj.value("name").toString()));
    ui->tableWidget_agvDevice->setItem(i, column_index++, new QTableWidgetItem(json_obj.value("type").toString()));
}

这段代码会将每个键值对分别放在 tablewidget 中的不同单元格中,其中 task_id 代表任务号,json_obj 则是一个由 json 字符串转化而来的 QJsonObject 对象。这里我默认了 json 数据中包含有 “name” 和 “type” 两个字段,并且使用了 insertRow() 方法来插入新行。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=1674

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?