我的 QList class 列表存储在这里什么
What does my list of QList class stores here
我正在研究一个 Qt 项目,我无法理解 QList 上的部分代码。在下面的代码中,我知道 Q_ASSERT 做了什么。我误解了名为 keyItemPairs 的列表将存储什么?
void NTCommunicationController::processStartupMessage(const QJsonObject ¶ms)
{
Q_ASSERT(m_systemSettings);
QList<QPair<QString, NTEditorModelItem*>> keyItemPairs =
{{QString(NTParameterSetMessage::SU_BSP_VERSION), m_systemSettings->getBspVersion()},
{QString(NTParameterSetMessage::SU_KERNEL_VERSION), m_systemSettings->getKernelVersion()},
{QString(NTParameterSetMessage::SU_APP_VERSION), m_systemSettings->getApplicationVersion()},
{QString(NTParameterSetMessage::SU_FW_VERSION), m_systemSettings->getFirmwareVersion()},
{QString(NTParameterSetMessage::SU_PIN_CODE), m_systemSettings->getPincodeSetting()}
};
applyValuesToModelItems(params, keyItemPairs, true);
}
如代码所示,列表存储 QPair<QString, NTEditorModelItem*>
.
类型的项目
初始化为5个值。第一个是 (NTParameterSetMessage::SU_BSP_VERSION), m_systemSettings->getBspVersion())
它存储的正是它的名字所告诉你的。它是一个对象列表,其中每个元素都是一对值。在这种特殊情况下 QPair<QString, NTEditorModelItem*>
.
将 QPair<>
(或类似的 std::pair<>
)视为在单个对象中存储两个关联值的一种方式。
如果您更熟悉这种方法,则可以使用具有两个字段的结构来实现相同的目的。例如:
struct Entry {
QString value;
NTEditorModelItem* model;
};
QList<Entry> items = {{NTParameterSetMessage::SU_BSP_VERSION, m_systemSettings->getBspVersion()},
{NTParameterSetMessage::SU_KERNEL_VERSION), m_systemSettings->getKernelVersion()}
}
您将获得几乎相同的功能。但是,使用成对模板,您不必创建单独的结构来将值绑定在一起。
我正在研究一个 Qt 项目,我无法理解 QList 上的部分代码。在下面的代码中,我知道 Q_ASSERT 做了什么。我误解了名为 keyItemPairs 的列表将存储什么?
void NTCommunicationController::processStartupMessage(const QJsonObject ¶ms)
{
Q_ASSERT(m_systemSettings);
QList<QPair<QString, NTEditorModelItem*>> keyItemPairs =
{{QString(NTParameterSetMessage::SU_BSP_VERSION), m_systemSettings->getBspVersion()},
{QString(NTParameterSetMessage::SU_KERNEL_VERSION), m_systemSettings->getKernelVersion()},
{QString(NTParameterSetMessage::SU_APP_VERSION), m_systemSettings->getApplicationVersion()},
{QString(NTParameterSetMessage::SU_FW_VERSION), m_systemSettings->getFirmwareVersion()},
{QString(NTParameterSetMessage::SU_PIN_CODE), m_systemSettings->getPincodeSetting()}
};
applyValuesToModelItems(params, keyItemPairs, true);
}
如代码所示,列表存储 QPair<QString, NTEditorModelItem*>
.
初始化为5个值。第一个是 (NTParameterSetMessage::SU_BSP_VERSION), m_systemSettings->getBspVersion())
它存储的正是它的名字所告诉你的。它是一个对象列表,其中每个元素都是一对值。在这种特殊情况下 QPair<QString, NTEditorModelItem*>
.
将 QPair<>
(或类似的 std::pair<>
)视为在单个对象中存储两个关联值的一种方式。
如果您更熟悉这种方法,则可以使用具有两个字段的结构来实现相同的目的。例如:
struct Entry {
QString value;
NTEditorModelItem* model;
};
QList<Entry> items = {{NTParameterSetMessage::SU_BSP_VERSION, m_systemSettings->getBspVersion()},
{NTParameterSetMessage::SU_KERNEL_VERSION), m_systemSettings->getKernelVersion()}
}
您将获得几乎相同的功能。但是,使用成对模板,您不必创建单独的结构来将值绑定在一起。