Что мой список магазинов класса QList здесь - PullRequest
0 голосов
/ 05 октября 2018

Я прохожу проект Qt и не могу понять часть кода в QList.В следующем коде я знаю, что делает Q_ASSERT.Я неправильно понял, что будет хранить мой список под названием keyItemPairs?

void NTCommunicationController::processStartupMessage(const QJsonObject &params)
{
  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);
}

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Он хранит именно то, что говорит его имя.Это список объектов, где каждый элемент представляет собой пару значений.В данном конкретном случае 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()}
}

Вы получаете практически те же функции.Однако, используя шаблон пары, вам не нужно создавать отдельную структуру только для того, чтобы связать значения вместе.

0 голосов
/ 05 октября 2018

Как показано в коде, список хранит элементы типа QPair<QString, NTEditorModelItem*>.

Инициализируется с 5 значениями.Первый (NTParameterSetMessage::SU_BSP_VERSION), m_systemSettings->getBspVersion())

...