2011-12-18 2 views
1

Я попытался подкласса QAbstractListModel для хранения элементов, каждая из которых имеет строку и bool. На мой взгляд, чеки разбиты, а не твердые, и я могу установить флажки, которые ранее были сняты, но я не могу снять флажки с отмеченными.Флажки в QAbstractListModel не работают должным образом

http://programmingexamples.net/wiki/Qt/ModelView/AbstractListModelCheckable

Есть ли что-то еще, что я должен сделать, чтобы получить их, чтобы работать как нормальные флажки?

ответ

3

Мне кажется, что ваш bool < -> Qt :: Конверсии CheckState идут не так, и вы получаете Qt :: PartiallyChecked (значение 1), где вы хотите Qt :: Checked. Реализация

Из данных() ::

if(role == Qt::CheckStateRole) 
{ 
    return this->Items[index.row()].Displayed; 
} 

Это выглядит неправильно. Вы возвращаете bool, где ожидается Qt :: CheckState. Try:

if(role == Qt::CheckStateRole) 
{ 
    return this->Items[index.row()].Displayed ? Qt::Checked : Qt::Unchecked; 
} 

адаптировать Также вашу реализацию УстановитьДанные() соответственно:

this->Items[index.row()].Displayed = static_cast<Qt::CheckState>(value.toUInt()) == Qt::Checked; 

Альтернатива: Сделать DisplayedQt::CheckState.

+0

А, я вижу сейчас. Спасибо Фрэнку! –

+0

Все номера для вас обоих. Это спасло меня. –

Смежные вопросы