crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> Работ с элементами модели - неужели цикл?
shamanix
  опции профиля:
сообщение 13.3.2010, 15:52
Сообщение #11


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 10.3.2010
Пользователь №: 1522

Спасибо сказали: 0 раз(а)




Репутация:   0  


кажется добил все таки. вот так работает
class MyModel : public QStandardItemModel{
    Qt::ItemFlags flags(const QModelIndex & index ) const{
        return  QStandardItemModel::flags(index) | Qt::ItemIsUserCheckable;
    }

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

        if ( role == Qt::CheckStateRole )
        {
            QStandardItem* item = static_cast<QStandardItem*>(index.internalPointer());

            return item->checkState();
        }
        return QStandardItemModel::data(index,role);
    }

    bool setData( const QModelIndex& index, const QVariant& value, int role ){
        if (role == Qt::CheckStateRole){
            QStandardItem* item = static_cast<QStandardItem*>(index.internalPointer());
            Qt::CheckState state = (value.toInt() == 2) ? Qt::Checked : Qt::Unchecked;
            item->setCheckState(state);

            return QStandardItemModel::setData(index,value,role);
        }        
        return QStandardItemModel::setData(index,value,role);
    }
};

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QListView list;
    MyModel model;
    QStandardItem item;

    item.setText("Test row");

    model.appendRow(&item);    

    list.setModel(&model);
    list.show();
    return a.exec();
}


почитав доки увидел что допустил ошибку - в переопределении setData необходимо высылать сигнал dataChanged.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V  < 1 2
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.4.2024, 20:05