QT — Как получить значения QVariant из выпадающего списка?

Я использую QVariant для хранения объекта внутри Qcombobox. Кажется, это работает нормально. Это код реализации:

Добавьте тип в QVariant в заголовке:

Q_DECLARE_METATYPE(CDiscRecorder*)

pDiscRecorder, преобразованный в CDiscRecorder:

CDiscRecorder* pDiscRecorder = new CDiscRecorder();

Затем хранится в выпадающем списке

ui->cbDrives->addItem(QString::fromWCharArray(strName), QVariant::fromValue(pDiscRecorder));

Проблема возникает, когда я пытаюсь вытащить это:

CDiscRecorder* discRecorder = this->ui->cbDrives->itemData(index).value<CDiscRecorder*>;

Я получаю ошибку:

error C3867: 'QVariant::value': function call missing argument list; use '&QVariant::value' to create a pointer to member

Я попытался реализовать подсказку в коде ошибки, но безрезультатно. Добавьте QObject в поле со списком Qt чтобы реализовать это поведение, как вернуть мой объект?

Спасибо

4

Решение

Компилятор дает вам подсказку, что список аргументов отсутствует — все, что вам нужно сделать, это добавить скобки, чтобы сообщить, что вы пытаетесь вызвать функцию. Так что измени его

CDiscRecorder* discRecorder = this->ui->cbDrives->itemData(index).value<CDiscRecorder*>();

И это должно работать. Это довольно длинная линия, может быть чище, чтобы сломать ее

QVariant variant = this->ui->cbDrives->itemData(index);
CDiscRecorder* discRecorder = variant.value<CDiscRecorder*>();
5

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

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

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