Как передать значения в Qt? - PullRequest
0 голосов
/ 21 ноября 2011

Я занимаюсь проектом NFC. В этом мне нужно обнаружить тег и прочитать содержимое тега из тега NFC, и мне нужно отправить идентификатор тега на сервер PHP. Со стороны сервера я получу ответ как {tagId & tagcontent}. После этого мне нужно извлечь tagId и tagcontents. До этого я закончил и работал нормально. Теперь моя проблема - передать значение другому классу. Как только я получаю ответ SUCCESS от сервера, мне нужно передать извлеченные значения другому классу. Как я могу это сделать. Я новичок в программировании на Qt. Пожалуйста, помогите мне.

1 Ответ

1 голос
/ 21 ноября 2011

Вы можете передавать параметры в виде пар ключ-значение, т.е. использовать для этой цели QHash или QVector.

Кроме того, если вы хотите, чтобы информация не была слишком конкретной, вы можете определить собственный класс C ++, содержащий значения для полей ответа и передать ссылку из вашего 1-го класса в другой класс.

Передача параметров в Qt аналогична C ++.

Ваш QStringList, QVector или QHash - это всего лишь классы. Вы можете передавать объекты этого класса как любой другой пользовательский класс.

Например:

В вашем целевом классе (скажем, T):

void getResponseHeader(QHash<QString,QString> x);

В вашем классе вызова (скажем, C):

T *t  = new T(); //or whatever instance you have
t->getResponseHeader(myParsedResponse);

Более конкретно, вы можете передавать параметры в C ++ либо по значению, либо по ссылке. Для передачи объектов лучше передавать их по ссылке.

Передача по значению означает, что копия объекта создается в стеке вызываемого, а изменение объекта означает изменение локальной копии, чтобы объект вызывающего объекта не изменялся при возврате функции. Передача по ссылке означает, что адрес объекта передается (ссылка содержит адрес, но ведет себя как объект), так что вызываемый объект может напрямую изменить исходный объект.

Посмотрите на эту ветку для В чем разница между передачей по ссылке и передачей по значению?

Хорошее объяснение с примерами приведено на codeforum на http://www.codeguru.com/forum/showthread.php?t=343473

...