Russian Qt Forum

Qt => Общие вопросы => Тема начата: White Owl от Май 15, 2009, 22:43



Название: Добавить пользовательские данные в QTreeWidgetItem.
Отправлено: White Owl от Май 15, 2009, 22:43
Надо приклеить к QTreeWidgetItem указатель на свой дополнительный объект.
Делаю:
Код:
-- в заголовке
class MyObj {....};
Q_DECLARE_METATYPE(MyObj*);

-- потом использую:
        MyObj *obj = new MyObj(...);
        QTreeWidgetItem *twi = new QTreeWidgetItem();
        twi->setText(0, obj->getName());
        QVariant var;
        var.setValue(obj);
        twi->setData(0, Qt::UserRole, var);
Все работает, все замечательно, но нервирует создание промежуточной переменной. Можно ли как-то избавиться от ее создания и передавать obj напрямую в twi->setData()?


Название: Re: Добавить пользовательские данные в QTreeWidgetItem.
Отправлено: Makss от Май 15, 2009, 23:18
а так сойдёт?

Код:
class QMyTreeWidgetItem : public QTreeWidgetItem
{
private:
protected:
public:
//конструктор
...
//Твои данный
MyObj *obj;
};


Название: Re: Добавить пользовательские данные в QTreeWidgetItem.
Отправлено: White Owl от Май 16, 2009, 00:09
Нет, не сойдет. У меня эти объекты не только на дереве висят.


Название: Re: Добавить пользовательские данные в QTreeWidgetItem.
Отправлено: Tonal от Май 18, 2009, 07:56
Код:
        MyObj *obj = new MyObj(...);
        QTreeWidgetItem *twi = new QTreeWidgetItem();
        twi->setText(0, obj->getName());
        twi->setData(0, Qt::UserRole, QVariant::fromValue(obj));
Так?


Название: Re: Добавить пользовательские данные в QTreeWidgetItem.
Отправлено: White Owl от Май 19, 2009, 21:40
Yep!
That is exactly what I was looking for, thank you.