Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Danila_Bagrofff от Май 03, 2011, 17:17



Название: QAbstractTableModel и check
Отправлено: Danila_Bagrofff от Май 03, 2011, 17:17
Перечитал много похожих тем, но у меня так и не становится выбираемой галка в таблице.
Чего не хватает никак не пойму....
Гляньте?..

Код:
bool PrimTableModel::setData(const QModelIndex &index, const QVariant &value, int role)
{

    if(role == Qt::CheckStateRole)
    {
       if(index.column()==0)
           return value.toBool();
       //emit dataChanged(index, index); надо ли?

    }

    return false;
}


Qt::ItemFlags PrimTableModel::flags ( const QModelIndex & index ) const
{
    if(index.column()==0)
        return Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable;

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

QVariant PrimTableModel::data(const QModelIndex &index, int role) const
{
     if(!index.isValid()) return QVariant();
     
...

     if(role == Qt::CheckStateRole)
     {
        if(index.column()==0)
            return Qt::Checked;//!!!! Как правильно инициализировать?
     }

     return QVariant();
}

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

Как сделать так?...


Название: Re: QAbstractTableModel и check
Отправлено: Mikhail от Май 03, 2011, 17:45
enum Qt::CheckState
This enum describes the state of checkable items, controls, and widgets.
Constant                      Value  Description
Qt::Unchecked              0       The item is unchecked.
Qt::PartiallyChecked       1       The item is partially checked. Items in hierarchical models may be partially checked if some, but not all, of their children are checked.
Qt::Checked                  2       The item is checked.

QCheckBox * check = new QCheckBox;

Соответственно возвращаемое значение
QVariant( check->checkState () ) 
// в зависимости от состояния QCheckBox

Ну и интересно что за чекбоксы то?


Название: Re: QAbstractTableModel и check
Отправлено: Danila_Bagrofff от Май 04, 2011, 10:08
Просто напротив каждой строчки надо чекбоксы, чтобы в таблице выделить нужные строчки, и потом сформировать отмеченные данные на печать в эксель =)