【发布时间】:2019-03-27 06:29:54
【问题描述】:
我是 C++ Qt 的新手。我正在尝试使用与需要使用的值不同的值填充 QComboBox。 例如,QComboBox 显示设备名称,但在选择时发送该设备的 mac 地址。我有数据。
我尝试使用 Qt::UserRole 和 Qt::DisplayRole 但只使用了 DisplayRole 中提到的值。我想我需要定义角色?如果是,那么如何?对此有何帮助?
QStandardItemModel *model = new QStandardItemModel(this);
int i = 0;
for (auto info : list)
{
if (info.validateMACAddress())
{
memData->comboBox->addItem(info.getMacAddress().arg(i));
memData->comboBox->setItemData(i, info.getDeviceName(), Qt::DisplayRole);
memData->comboBox->setItemData(i, info.getMacAddress(), Qt::UserRole + 1);
i++;
}
}
memData->comboBox->setModel(model);
【问题讨论】:
-
你可以解释你的问题是什么。你不知道如何获得MAC吗?删除
memData->comboBox->setModel(model);和QStandardItemModel *model = new QStandardItemModel(this); -
问题是当我选择设备而不是mac地址时发送设备名称
-
也就是说,要不要获取连接到QComboBox的slot中的getMacAddress信息?
-
是的,如果我可以在不更改任何其他代码的情况下做到这一点,那就太好了。
-
你可以通过
currentDatamemData->comboBox->currentData(Qt::UserRole + 1);获取它