Работ с элементами модели - неужели цикл? |
Здравствуйте, гость ( Вход | Регистрация )
Работ с элементами модели - неужели цикл? |
shamanix |
10.3.2010, 13:00
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 17 Регистрация: 10.3.2010 Пользователь №: 1522 Спасибо сказали: 0 раз(а) Репутация: 0 |
Добрый день. Задача тривиальная - сделать QListView с чекбоксами. Я так понял что один единственный способ это сделать это для каждого элемента модели устанавливать флаги? В цикле? Гугл перерыл в поисках чего-нибудь типа model->getItems().setFlags(...); но нашел только обращение к каждому элементу в цикле...может не допонял сути истинной.
|
|
|
SABROG |
10.3.2010, 13:10
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
Писать делегата.
|
|
|
DIMEDROLL |
10.3.2010, 13:29
Сообщение
#3
|
Участник Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: 0 |
Добрый день. Задача тривиальная - сделать QListView с чекбоксами. Какой класс ты используешь в качестве модели? Нужно отнаследоваться от него и переопределить flags: Цитата Qt::ItemFlags QAbstractItemModel::flags ( const QModelIndex & index ) const [virtual] что бы в добавок к дефолтным флагам, возвращал так же: Qt::ItemIsUserCheckable Не проверял в коде, попробуй и напиши вышло аль нет |
|
|
shamanix |
10.3.2010, 13:33
Сообщение
#4
|
Студент Группа: Новичок Сообщений: 17 Регистрация: 10.3.2010 Пользователь №: 1522 Спасибо сказали: 0 раз(а) Репутация: 0 |
Писать делегата. на чем основываясь? какие методы помогут? поглядел документацию по делегатам,что-то ничего связанного с элементами не нашел... Добрый день. Задача тривиальная - сделать QListView с чекбоксами. Какой класс ты используешь в качестве модели? Нужно отнаследоваться от него и переопределить flags: Цитата Qt::ItemFlags QAbstractItemModel::flags ( const QModelIndex & index ) const [virtual] что бы в добавок к дефолтным флагам, возвращал так же: Qt::ItemIsUserCheckable Не проверял в коде, попробуй и напиши вышло аль нет Класс QStandartItemModel. Сейчас попробую, спасибо за совет. |
|
|
SABROG |
10.3.2010, 14:22
Сообщение
#5
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
|
|
|
Гость_Гость_* |
10.3.2010, 18:50
Сообщение
#6
|
Гости |
Можно и переопределить делегат , наследоваться лучше от QItemDelegate
и переопределять функции paint() и editorEvent() я не придумав как сделать tristate чекбокс в представлении сделал именно так. Хотя для обычного чекбокса лучше переопределять модель. |
|
|
shamanix |
11.3.2010, 20:48
Сообщение
#7
|
Студент Группа: Новичок Сообщений: 17 Регистрация: 10.3.2010 Пользователь №: 1522 Спасибо сказали: 0 раз(а) Репутация: 0 |
Добрый день. Задача тривиальная - сделать QListView с чекбоксами. Какой класс ты используешь в качестве модели? Нужно отнаследоваться от него и переопределить flags: Цитата Qt::ItemFlags QAbstractItemModel::flags ( const QModelIndex & index ) const [virtual] что бы в добавок к дефолтным флагам, возвращал так же: Qt::ItemIsUserCheckable Не проверял в коде, попробуй и напиши вышло аль нет попробовал - не вышло Раскрывающийся текст class MyModel : public QStandardItemModel{ Qt::ItemFlags flags(const QModelIndex & index ) const{ return Qt::ItemIsUserCheckable | QStandardItemModel::flags(index); } }; 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(); } |
|
|
shamanix |
11.3.2010, 22:10
Сообщение
#8
|
Студент Группа: Новичок Сообщений: 17 Регистрация: 10.3.2010 Пользователь №: 1522 Спасибо сказали: 0 раз(а) Репутация: 0 |
добился чтобы появился чекбокс,но теперь что-то галка в нем не ставится
|
|
|
DIMEDROLL |
12.3.2010, 9:16
Сообщение
#9
|
Участник Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: 0 |
добился чтобы появился чекбокс,но теперь что-то галка в нем не ставится Заккоментируй свое переопределение метода data, что то ты там нашаманил не то. А просто добавь
или
И будет твой элемент с чекбоксом |
|
|
shamanix |
13.3.2010, 14:55
Сообщение
#10
|
Студент Группа: Новичок Сообщений: 17 Регистрация: 10.3.2010 Пользователь №: 1522 Спасибо сказали: 0 раз(а) Репутация: 0 |
добился чтобы появился чекбокс,но теперь что-то галка в нем не ставится Заккоментируй свое переопределение метода data, что то ты там нашаманил не то. А просто добавь
или
И будет твой элемент с чекбоксом ну так это понятно,но в том то и вопрос как сделать так чтобы не пришлось для каждого итема вызывать setCheckState. Итемы то берутся в данном случае из базы. Тогда после заполнения модели придется еще и цикл организовывать с setCheckState |
|
|
Текстовая версия | Сейчас: 27.12.2024, 23:15 |