Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ QVariant

Автор: zss 13.4.2010, 10:36

В модели используется тип QVariant.
Мне нужно было помимо QString добавить некие данные.

Создал пользовательский тип

struct ItemData
{
    QString text;
    int offset;
    int size;
    ...
}
Q_DECLARE_METATYPE(ItemData)


Но модель перестала отрисовывать данные.
То есть, как я понял, например, метод toString не возвращает теперь то, что нужно.

Можно ли как это указать для пользовательского типа, чтоб он работал как QVariant, но мог хранить еще и дополнительные пользовательские данные.

Автор: ufna 13.4.2010, 12:27

а унаследовать QVariant как класс?

Автор: Litkevich Yuriy 13.4.2010, 15:51

Цитата(zss @ 13.4.2010, 14:36) *
метод toString не возвращает теперь то, что нужно.
он просто ничего не возвращает, т.к. QVariant не имеет никакого представления о том, как твою структуру к QString приводить

Цитата(zss @ 13.4.2010, 14:36) *
Мне нужно было помимо QString добавить некие данные.
пользовательские данные добавляются тем же методом что и все остальные:
bool QSqlTableModel::setData ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole )   [virtual]

только роль выбирается Qt::UserRole

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)