Используйте QMap в слоте

Я хочу использовать QMap, который я ранее создал, для использования внутри слота. Я пытался следовать этот но это все равно не сработало (я думаю, что просто делаю что-то глупое). Вот код, который я использую.

Конструктор:

QMap <int, QList<int> > tiles;
connect(ui->lineEdit, SIGNAL(editingFinished()), this, SLOT(someSlot()));

Теперь, всякий раз, когда я отправляю сигнал editFinished, я хочу, чтобы someSlot проверил, есть ли значение в QMap, и продолжил работу с различными условиями, если это так. Проблема в том, как передать QMap в слот? Qt, похоже, не позволяет слоты с параметрами.

0

Решение

Слот — это просто функция, вызываемая Qt. В том, как это называется, есть магия, но это просто функция. Аргументы передаются в сигнал (как обычная функция), и Qt в конечном итоге передает этот аргумент (или, скорее, копию этого аргумента) в слот получателя. В Qt есть логика, когда вам не нужно передавать столько аргументов в слот, сколько вы делали в сигнале при определении соединения, но это не для этого обсуждения.

Вы не можете передавать аргументы по имени в таком соединении.

Вы можете сделать так, чтобы ваш объект плиток был переменной-членом вашего класса, реализующей someSlot (), или вам придется передавать плитки сигналу, который подключен к someSlot (const QMap>&)

Моя рекомендация — сделать тайлы переменной-членом, а не переменной стека.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]