Russian Qt Forum
Ноябрь 23, 2024, 12:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3 4   Вниз
  Печать  
Автор Тема: CheckBox в QHeaderView  (Прочитано 39855 раз)
spbtellurian
Гость
« : Ноябрь 19, 2009, 14:36 »

Как в заголовок (QHeaderView) помимо текста вставить CheckBox Непонимающий
Ну кпримеру в QAbstractItemModel есть возможность вставлять чекбоксы в ячейки а вот как это сделать в заголовок Непонимающий
Записан
Hordi
Гость
« Ответ #1 : Ноябрь 19, 2009, 16:05 »

Давай мыло - скину честно украденный и переделанный класс...
Записан
spbtellurian
Гость
« Ответ #2 : Ноябрь 19, 2009, 17:53 »

спасибо Улыбающийся
см личку
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #3 : Ноябрь 19, 2009, 18:18 »

Как в заголовок (QHeaderView) помимо текста вставить CheckBox Непонимающий
можешь привести задачу, где это необходимо?
чета как не напрягался не смог придумать...
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
spbtellurian
Гость
« Ответ #4 : Ноябрь 19, 2009, 19:29 »

можешь привести задачу, где это необходимо? чета как не напрягался не смог придумать...
Странно т.к. задачка встречается повсеместно. Групповые операции.

Ну скажем есть у тебя таблица во всех ячках одной из колонок есть чекбоксы. Весьма распространенная ситуация. А теперь представим что надо все чекбоксы установить\снять. Когда строк в таблице (читай чекбоксов) две-три ну наверно можно три раза кликнуть мышкой а когда строк с несколько десятков.
Конечно можно тупо и упорно кликать по всем чекбоксам но гораздо быстрее и удобнее кликнуть один раз в заголовке.

Есть альтернатива – менее очевидная и менее удобная – вместо одного действия (клик в заголовке) делать два действия – выбор всей колонки и клик по любому из чекбоксов в колонке. Но это гораздо менее красивое и менее очевидное решение.


Записан
NicK
Гость
« Ответ #5 : Ноябрь 19, 2009, 20:05 »

можно просто добавить соответствующий пункт в контекстное меню.
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #6 : Ноябрь 19, 2009, 21:32 »

можно просто добавить соответствующий пункт в контекстное меню.
+500
Странно т.к. задачка встречается повсеместно. Групповые операции.Ну скажем есть у тебя таблица во всех ячках одной из колонок есть чекбоксы.
плохое решение, я обычно для таких целей пользуюсь патерном посетитель:
Написал один раз обход модели, передал алгоритм или выбрал алгоритм с пом. того-же выпадающего меню и опля, везде чекбоксы расставлены или еще чего. Меньше кода писать приходится.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #7 : Ноябрь 20, 2009, 01:27 »

Цитировать
плохое решение, я обычно для таких целей пользуюсь патерном посетитель:
Написал один раз обход модели, передал алгоритм или выбрал алгоритм с пом. того-же выпадающего меню и опля, везде чекбоксы расставлены или еще чего. Меньше кода писать приходится.

Причем тут паттерны? Автора интересовал вопрос построения интерффейса (никто не говорит что саму операцию скрывающуюся за выделением чекбокса в заголовке он не будет реализовывать с помощью того же шаблона проходящего по всей модели) - и если выпадающее меню и является решением - то менее очевидным для пользователя - т.к. 1 - в каком контекстном меню - наверное в меню заголовка столбца а не строки т.к. контекстное меню строки относится к строке, а контекстное меню вызывать щелкая по стоблцу - это еще надо догадаться - "тупой" пользователь этого сразу не поймет. А вот чекбокс - отлично и наглядно - вспомните формы почтовых клиентов в интернете - где все письма выделяются именно таким образом!
Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #8 : Ноябрь 20, 2009, 10:08 »

Код:
QVariant QSqlQueryModel::headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const 
Записан
Hordi
Гость
« Ответ #9 : Ноябрь 20, 2009, 11:43 »

Код:
QVariant QSqlQueryModel::headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const 

И чем это может помочь?
Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #10 : Ноябрь 20, 2009, 12:04 »

Код:
Qt::CheckStateRole
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #11 : Ноябрь 20, 2009, 12:09 »

Цитировать
плохое решение, я обычно для таких целей пользуюсь патерном посетитель:
Написал один раз обход модели, передал алгоритм или выбрал алгоритм с пом. того-же выпадающего меню и опля, везде чекбоксы расставлены или еще чего. Меньше кода писать приходится.
Причем тут паттерны? Автора интересовал вопрос построения интерффейса.....
А при том, что при разрастании функционала никаких экранов не хватит, что-бы "заочевиднить" функцию.
Правильно учитесь писать программы.... моники не резиновые....
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Hordi
Гость
« Ответ #12 : Ноябрь 20, 2009, 12:14 »

Код:
Qt::CheckStateRole

Лень проверять, возможно и ошибаюсь, но когда-то перепробывал и это - не работает оно для QHeaderView - не совсем это обычный класс.
Записан
spbtellurian
Гость
« Ответ #13 : Ноябрь 20, 2009, 12:23 »

Код:
Qt::CheckStateRole

Перед тем как писать в форум я это пробывал. У меня не получилось.
Одной роли мало, надо вернуть соответсвуюющий флаг, для ячеек получается вернуть флаг ,а вот как вернуть нужный флаг для заголовка Непонимающий
Записан
Hordi
Гость
« Ответ #14 : Ноябрь 20, 2009, 12:30 »

Цитировать
плохое решение, я обычно для таких целей пользуюсь патерном посетитель:
Написал один раз обход модели, передал алгоритм или выбрал алгоритм с пом. того-же выпадающего меню и опля, везде чекбоксы расставлены или еще чего. Меньше кода писать приходится.
Причем тут паттерны? Автора интересовал вопрос построения интерффейса.....
А при том, что при разрастании функционала никаких экранов не хватит, что-бы "заочевиднить" функцию.
Правильно учитесь писать программы.... моники не резиновые....

Чекбокс в колонке хидера - это абсолютно устоявшийся GUI-контрол - масса заказчиков его хотят. Я знаю, что горячая клавиша - быстрее, а меню - проще в реализации, но если клиент хочет чекбокс - склонить его в сторону меню НЕ ПОЛУЧИТСЯ!
Записан
Страниц: [1] 2 3 4   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.419 секунд. Запросов: 23.