Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Zerkin от Ноябрь 22, 2010, 10:15



Название: Чек каждого объекта в simpletreemodel.
Отправлено: Zerkin от Ноябрь 22, 2010, 10:15
Всех приветствую. Сделал модель дерева по примеру  simpletree model, надо чтобы каждый элемент имел чекбокс.

 
Код:
Qt::ItemFlags TreeModel::flags(const QModelIndex &index) const
 {
     if (!index.isValid())
         return 0;

return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable ;
 }

Почему-то обрабатывается только  Qt::ItemIsEnabled | Qt::ItemIsSelectable =\
Что я сделал не так?


Название: Re: Чек каждого объекта в simpletreemodel.
Отправлено: UVV от Ноябрь 22, 2010, 10:52
Нужно обработать Qt::CheckStateRole в data().


Название: Re: Чек каждого объекта в simpletreemodel.
Отправлено: Zerkin от Ноябрь 22, 2010, 11:15
А можно поподробнее? если не сложно.


Название: Re: Чек каждого объекта в simpletreemodel.
Отправлено: UVV от Ноябрь 22, 2010, 11:34
Код:
MyModel::data(...)
{
    ...
    else if (role == Qt::CheckStateRole) 
    {
        if (aNode->valueIsTrue())
            return Qt::Checked;
        else
            return Qt::Unchecked;
    }
    ...
}

MyModel::setData(...)
{
    ...
    if (role == Qt::CheckStateRole) {                                 
        aNode->setValue(value.toBool());
        emit dataChanged(parentIndex, parentIndex);
    }
    ...
}