Здравствуйте, гость ( Вход | Регистрация )
shamanix | Дата 13.3.2010, 15:52 |
кажется добил все таки. вот так работает
почитав доки увидел что допустил ошибку - в переопределении setData необходимо высылать сигнал dataChanged. |
|
shamanix | Дата 13.3.2010, 14:55 |
добился чтобы появился чекбокс,но теперь что-то галка в нем не ставится ![]() ![]() Заккоментируй свое переопределение метода data, что то ты там нашаманил не то. А просто добавь
или
И будет твой элемент с чекбоксом ![]() ну так это понятно,но в том то и вопрос как сделать так чтобы не пришлось для каждого итема вызывать setCheckState. Итемы то берутся в данном случае из базы. Тогда после заполнения модели придется еще и цикл организовывать с setCheckState ![]() |
|
DIMEDROLL | Дата 12.3.2010, 9:16 |
добился чтобы появился чекбокс,но теперь что-то галка в нем не ставится ![]() ![]() Заккоментируй свое переопределение метода data, что то ты там нашаманил не то. А просто добавь
или
И будет твой элемент с чекбоксом ![]() |
|
shamanix | Дата 11.3.2010, 22:10 |
добился чтобы появился чекбокс,но теперь что-то галка в нем не ставится ![]() ![]()
|
|
shamanix | Дата 11.3.2010, 20:48 |
Добрый день. Задача тривиальная - сделать 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(); } |
|
Гость | Дата 10.3.2010, 18:50 |
Можно и переопределить делегат , наследоваться лучше от QItemDelegate и переопределять функции paint() и editorEvent() я не придумав как сделать tristate чекбокс в представлении сделал именно так. Хотя для обычного чекбокса лучше переопределять модель. |
|
SABROG | Дата 10.3.2010, 14:22 |
на чем основываясь? Да я вечно путаю наследование модели от наследования делегатов. |
|
shamanix | Дата 10.3.2010, 13:33 |
Писать делегата. на чем основываясь? какие методы помогут? поглядел документацию по делегатам,что-то ничего связанного с элементами не нашел... ![]() Добрый день. Задача тривиальная - сделать QListView с чекбоксами. Какой класс ты используешь в качестве модели? Нужно отнаследоваться от него и переопределить flags: Цитата Qt::ItemFlags QAbstractItemModel::flags ( const QModelIndex & index ) const [virtual] что бы в добавок к дефолтным флагам, возвращал так же: Qt::ItemIsUserCheckable Не проверял в коде, попробуй и напиши вышло аль нет ![]() Класс QStandartItemModel. Сейчас попробую, спасибо за совет. |
|
DIMEDROLL | Дата 10.3.2010, 13:29 |
Добрый день. Задача тривиальная - сделать QListView с чекбоксами. Какой класс ты используешь в качестве модели? Нужно отнаследоваться от него и переопределить flags: Цитата Qt::ItemFlags QAbstractItemModel::flags ( const QModelIndex & index ) const [virtual] что бы в добавок к дефолтным флагам, возвращал так же: Qt::ItemIsUserCheckable Не проверял в коде, попробуй и напиши вышло аль нет ![]() |
|
SABROG | Дата 10.3.2010, 13:10 |
Писать делегата. | |
Просмотр темы полностью (откроется в новом окне) | |
![]() |
Текстовая версия | Сейчас: 10.2.2025, 20:14 |