crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> QCheckBox в HeaderData модели, как поместить
icore2008
  опции профиля:
сообщение 12.4.2008, 18:42
Сообщение #1


Студент
*

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

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




Репутация:   0  


здравствуйте,
мне нужно поместить в вертикальный заголовок кроме номера еще QCheckBox.
Видел в демосах пример interview там около номера помещают рисунок (звездочку) путем переопределения метода QVariant::headerData(int section, Qt::Orientation orientation, int role);

QVariant CustomModel::headerData(int section, Qt::Orientation orientation, int role) const
{
    static QIcon services(QPixmap(":/images/services.png"));
    if (role == Qt::DisplayRole)
        return QString::number(section);
    if (role == Qt::DecorationRole)
        return qVariantFromValue(services);
    return QStandardItemModel::headerData(section, orientation, role);
}


Ковырялся с ролью UserRole - не помогло
никак вставлю вместо звездочки - QCheckBox. Помогите, пожалуйста.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.4.2008, 19:01
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


а суть объяснить можешь, что может делать "галочка" в заголовке строки?
Я, как пользователь, интуитивно не понимаю.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
icore2008
  опции профиля:
сообщение 12.4.2008, 19:06
Сообщение #3


Студент
*

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

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




Репутация:   0  


могу, например, пользователю нужно удалить некоторые строки. Он отмечает и удаляет :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.4.2008, 19:12
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


хм, я как пользователь сделал бы так:
Выделил несколько строк, щелкая по их заголовкам, и нажал <Del>, при этом ожидаю окошка "Вы действительно хотите удалить N строк?"
---
Ексель в пример бери, на нем многие воспитаны.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.4.2008, 19:14
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


если мне надо удалить -дцать строк подряд, делаю так:
выделяю первую удаляемую, нажимаю <Shift> выделяю последнюю -> выделяется несколько строк, дальше как обычно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
icore2008
  опции профиля:
сообщение 12.4.2008, 19:32
Сообщение #6


Студент
*

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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 12.4.2008, 19:14) *
если мне надо удалить -дцать строк подряд, делаю так:
выделяю первую удаляемую, нажимаю <Shift> выделяю последнюю -> выделяется несколько строк, дальше как обычно.


понимаю, но у меня такое задание :)
сделать именно чекбоксы
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Admin
  опции профиля:
сообщение 13.4.2008, 10:55
Сообщение #7


Администратор
****

Группа: Администратор
Сообщений: 646
Регистрация: 9.10.2007
Из: crossplatform.ru
Пользователь №: 1

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




Репутация:   2  


А чего тут такого?
Переопределяешь класс QHeaderView, в нем, возможно по какому-нибудь параметру в конструкторе, создаешь виджет checkbox
Если ты работаешь с тем же QTreeView, то у него есть метод void QTreeView::setHeader ( QHeaderView * header ), в качестве параметра которому передаешь указатель на твой новоиспеченный класс производный от QHeaderView. И наслаждаешься результатом.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 19.11.2009, 13:38
Сообщение #8


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

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




Репутация:   0  


Admin,Что-то не понял что и как надо переопределять в QHeaderView чтобы получить чекбоксы :( примерчик был бы кстати.

Ну возьмём к примеру
QAbstractItemModel
там есть
Qt::ItemFlags QAbstractItemModel::flags ( const QModelIndex & index ) const   [virtual]
где будем возращать какие флаги есть у эдемента (ну наличие или отсутсвие тогоже чекбокса) далее в методе
QVariant QAbstractItemModel::data ( const QModelIndex & index, int role = Qt::DisplayRole ) const   [pure virtual]
проверяем интересующие нас роли и выдаём значение тогоже чебокса в интересующих нас колонках.

В тои же
QAbstractItemModel
есть
headerData
по сущности полностью аналогичный выше описанному data. Однако "фокус" с чекбоксами не прокатывает. Интуития подсказывает что должен быть некий метод headerFlags по аналогии с выше озвученным flags но его нет. И в
QHeaderView
тоже найти утсановку флагов не получилось.

Посему вопрос с утсановкой чекбоксов в заголовке остаются актуальным.


зы:
Litkevich Yuriy, тебе как пользователю назначение этого чебокса станет весьма понятно и весьма полезно кога в данной колонке будут находиться чекбоксы. Т.е. к примеру у тебя таблица из 50 строк в какойто колонке имеються чекбоксы. Эти чекбоксы ты хочешь все либо поставить либо снять. Разумеется гораздо удобнее это сделать одним кликом по заголовку нежели отщёлкивать 50 раз ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 19.11.2009, 13:49
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(flankerr @ 19.11.2009, 16:38) *
Эти чекбоксы ты хочешь все либо поставить либо снять. Разумеется гораздо удобнее это сделать одним кликом по заголовку нежели отщёлкивать 50 раз
недавно, где-то такое уже встречал, действительно удобно
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 28.12.2024, 9:49