QComboBox的Item项携带(存储)一个或多个数据

简介: 1.携带(存储)一个数据:addItem(const QString &text, const QVariant &userData = QVariant())2.携带(存储)多个数据:setModel(QAbstractItemModel *model)

方法

  1. 携带(存储)一个数据:addItem(const QString &text, const QVariant &userData = QVariant())
  2. 携带(存储)多个数据:setModel(QAbstractItemModel *model)

携带(存储)一个数据

  • 主要内容
 // 添加数据
for(auto &var:infos)
{
    ui->comboBox_only->addItem(var.name,var.idFA);
}

 // 获取数据
int     idFA =ui->comboBox_only->currentData().toInt();
QString name =ui->comboBox_only->currentText();

携带(存储)多个数据

  • 主要内容
 // 添加数据
auto pModel = new QStandardItemModel(this);
for(auto &var:infos)
{
    auto pItem = new QStandardItem(var.name);
    pItem->setData(var.idFA,Qt::UserRole);
    pItem->setData(var.equipId,Qt::UserRole+1);
    pItem->setData(var.equipNum,Qt::UserRole+2);
    pModel->appendRow(pItem);
}
qDebug()<<"pModel.rowCount() ="<<pModel->rowCount();
ui->comboBox->setModel(pModel);


 // 获取数据
 auto pModel=qobject_cast<QStandardItemModel *>(ui->comboBox->model());
 if(pModel){
     int     idFA =pModel->data(pModel->index(index,0),Qt::UserRole).toInt();
     QString name=ui->comboBox->currentText();
     QString equipId=pModel->data(pModel->index(index,0),Qt::UserRole+1).toString();
     int     equipNum=pModel->data(pModel->index(index,0),Qt::UserRole+2).toInt();
}

全部内容

#include "uniteitemdata.h"
#include "ui_uniteitemdata.h"
#include <QStandardItemModel>
#include <QStandardItem>
#include <QVector>
#include <QDebug>
#pragma execution_character_set("utf-8")
namespace{
struct Test {
    int     idFA;           //方案ID
    QString name;           //名称
    QString equipId;        //装备ID
    int     equipNum;       //装备数量
};
QVector<Test> infos = {
    {1, "奥迪A6L", "9001",101},
    {2, "宝马X7", "9003",102},
    {3, "迈巴赫S", "9002",103},
    {4, "库里南", "9020",104},
    {5, "丹拿","9002",105},
    {6, "柏林之声", "9004",106},
    {7, "奔驰", "9006",107},
    {8, "林肯", "9008",108},
    };
}

UniteItemData::UniteItemData(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::UniteItemData)
{
    ui->setupUi(this);
    setWindowFlag(Qt::WindowStaysOnTopHint);
    ui->comboBox->clear();
    // 携带(存储)多个数据
    auto pModel = new QStandardItemModel(this);
    for(auto &var:infos)
    {
        auto pItem = new QStandardItem(var.name);
        pItem->setData(var.idFA,Qt::UserRole);
        pItem->setData(var.equipId,Qt::UserRole+1);
        pItem->setData(var.equipNum,Qt::UserRole+2);
        pModel->appendRow(pItem);
    }
    qDebug()<<"pModel.rowCount() ="<<pModel->rowCount();
    ui->comboBox->setModel(pModel);

    // 携带(存储)一个数据
    for(auto &var:infos)
    {
        ui->comboBox_only->addItem(var.name,var.idFA);
    }
    ui->textBrowser->clear();
}

UniteItemData::~UniteItemData()
{
    delete ui;
}



void UniteItemData::on_comboBox_currentIndexChanged(int index)
{
    auto pModel=qobject_cast<QStandardItemModel *>(ui->comboBox->model());
    if(pModel){
        int     idFA =pModel->data(pModel->index(index,0),Qt::UserRole).toInt();
        QString name=ui->comboBox->currentText();
        QString equipId=pModel->data(pModel->index(index,0),Qt::UserRole+1).toString();
        int     equipNum=pModel->data(pModel->index(index,0),Qt::UserRole+2).toInt();
        ui->textBrowser->clear();
        QString str = "-";// 重复30次
        ui->textBrowser->append(str.repeated(15)+"携带(存储)多个数据"+str.repeated(15));
        ui->textBrowser->append(QString("方案ID =")+QString::number(idFA));
        ui->textBrowser->append(QString("名称   =")+QString(name));
        ui->textBrowser->append(QString("装备ID =")+QString(equipId));
        ui->textBrowser->append(QString("装备数量=")+QString::number(equipNum));


    }

}


void UniteItemData::on_comboBox_only_currentIndexChanged(int index)
{
    ui->textBrowser->clear();
    QString str = "-";// 重复30次
    ui->textBrowser->append(str.repeated(15)+"携带(存储)一个数据"+str.repeated(15));
    int     idFA =ui->comboBox_only->currentData().toInt();
    QString name =ui->comboBox_only->currentText();
    ui->textBrowser->append(QString("方案ID =")+QString::number(idFA));
    ui->textBrowser->append(QString("名称   =")+QString(name));
}

效果

test1.gif

相关文章
|
7月前
表单项validator的校验tip未撑起高度,导致遮盖下边项的内容
表单项validator的校验tip未撑起高度,导致遮盖下边项的内容
42 0
表单项validator的校验tip未撑起高度,导致遮盖下边项的内容
element-plus:el-table自定义展开图标处于列的位置
element-plus:el-table自定义展开图标处于列的位置
687 0
|
JavaScript
element-UI el-table动态显示隐藏列造成固定一侧的列(fixed=“left/right“)错误显示
问题原因:多个tabs共用一个实体,动态显示隐藏列 出现了固定在右侧的列(fixed="right")错位 【解决方案】 表格的重新布局,只要table数据发生变化的时候就重新渲染表格 ```js this.$nextTick(() => { this.$refs.formname.doLayout() }) ``` 参考element官方文档 ![请在此添加图片描述](https://developer-private-1258344699.cos.ap-guangzhou.myqcloud.com/column/article/5877188/20231030-e40
263 0
element-UI el-table动态显示隐藏列造成固定一侧的列(fixed=“left/right“)错误显示
element-ui table排序sortable三种状态,怎么去掉默认状态
在 element-ui 中,也定义了 sort-orders 有三种状态: ascending、descending、null,这三种状态形成一个循环切换。
2662 0
|
5月前
|
定位技术 API 数据格式
Element UI【详解】el-cascader 级联选择器 - 行政区划选择(可以选择任意一级),限定选择范围,获取并解析选中的节点
Element UI【详解】el-cascader 级联选择器 - 行政区划选择(可以选择任意一级),限定选择范围,获取并解析选中的节点
602 0
|
JSON 数据格式
easyUI 的combobox如何获取除valueField和textField外的三个值
easyUI 的combobox如何获取除valueField和textField外的三个值
|
JavaScript 前端开发 Java
74jqGrid - 冻结带有分组头的列
74jqGrid - 冻结带有分组头的列
75 0
user_artist__data数据记录用户播放某首歌曲的次数,数据包含3个字段,分别为useid(用户ID)、artistid(艺术家ID)、playcount(播放次数)更新一下子
user_artist__data数据记录用户播放某首歌曲的次数,数据包含3个字段,分别为useid(用户ID)、artistid(艺术家ID)、playcount(播放次数)更新一下子
158 0
user_artist__data数据记录用户播放某首歌曲的次数,数据包含3个字段,分别为useid(用户ID)、artistid(艺术家ID)、playcount(播放次数)更新一下子
|
监控 JavaScript
页面如何获取checkbox选中的多个值?
页面如何获取checkbox选中的多个值?
245 0
页面如何获取checkbox选中的多个值?
|
JavaScript
el-table分页数据+回显+勾选状态+记录数据(map实战)
el-table分页数据+回显+勾选状态+记录数据(map实战)
907 0