Russian Qt Forum
Октябрь 01, 2024, 10:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QAbstractTableModel и check  (Прочитано 3102 раз)
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();
}

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

Как сделать так?...
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #1 : Май 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

Ну и интересно что за чекбоксы то?
Записан
Danila_Bagrofff
Гость
« Ответ #2 : Май 04, 2011, 10:08 »

Просто напротив каждой строчки надо чекбоксы, чтобы в таблице выделить нужные строчки, и потом сформировать отмеченные данные на печать в эксель =)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.083 секунд. Запросов: 23.