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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Расширение для QTableView  (Прочитано 6589 раз)
danius
Гость
« : Июль 02, 2009, 02:05 »

Вот сделал на коленке, сохраняет порядок и набор столбцов. Но для одной таблицы, сорри времени править пока нет. Буду рад commit'ам. http://bitbucket.org/danius/x3tableview/
Записан
Rcus
Гость
« Ответ #1 : Июль 02, 2009, 06:49 »

Очень похоже на меню Dolphin, правда такой велосипед есть в мало-мальски приличном KDE приложении Улыбающийся
Я тоже как-то такое делал, только правда в силу своей неприязни к наследованию сделано это было через композицию объектов Улыбающийся
Записан
danius
Гость
« Ответ #2 : Июль 02, 2009, 12:47 »

Будь любезен скажи где именно есть что-то подобное, нет желания изобретать велосипед
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #3 : Июль 02, 2009, 13:53 »

А мне кажется там наследование и не нужно - а нужен внешний класс которому передается указатель на потомка QTableView - а он уже умеет сохранять колонки (можно также передавать указатель на свой QSettings - у меня есть такой для XML). Кроме того этот класс может уметь выводить диалоговое окно "Настройка колонок" в котором пользователь галочками выбирает видимые колонки и стрелочками меняет их положение - это как раз спасет если все колонки были выключены. Кроме того это класс можно заставить по очереди натравливаться на все таблицы формы при ее закрытии чтобы сохранить положение колонок всех таблиц - то есть автоматически получается работа с несколькими таблицами. И еще неприятный фактор наследования - если я возьму другой наследник QTableView - то с эти уже не получится работать. Наследование здесь точно не нужно. Т.к. сохранялка колонок не реализована посредством "QTableView" - а лишь использует ее данные.
Записан
danius
Гость
« Ответ #4 : Июль 03, 2009, 12:05 »

Возможно это так, но единственный разумный  довод для этого
Цитировать
И еще неприятный фактор наследования - если я возьму другой наследник QTableView - то с эти уже не получится работать.
Всё остальное можно реализовать и так.
Цитировать
класс может уметь выводить диалоговое окно "Настройка колонок"
Идея была как раз в том, что бы не выводить диалоговое окно, а перемещать колонки можно drag&drop.
Что касается сохранения настроек для разных таблиц, то можно сохранять их допустим QSettings по пути `x3tableview/имя_таблицы'.
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #5 : Июль 03, 2009, 17:36 »

Цитировать
Идея была как раз в том, что бы не выводить диалоговое окно

Плохая идея. Если колонок много а монитор узкий - пользователю надо сначала догадаться подвигать скроллбар, тчобы найти нужную колонку, потом попасть щелчком по ней для отключения? И опять же если все выключить как включать. А если выводить контекстное меню с галочками напротив имен колонок при щелчке по таблице - опять же не всегда удобно т.к. для показа/спрятывания 1 колонки прийдется щелкать 1 раз - N колонок N раз. Вметсо того чтобы в нормальном окошке 1 раз все настроить видя нормальный список колонок.

Цитировать
Всё остальное можно реализовать и так.
Да можно много чего делать и так и сяк. Но наследование нужно применять только там где это необходимо - то есть там где наследник "Реализован посредством предка", иначе использовать его нельзя. Я уже много раз видел как наследование заводит в тупик. Оно устанавливает слишком тесные связи между частями программы - так что потом не отвертишься. Множественное наследование - так вообще лучше использовать только для реализации интерфейсных классов - там еще больше подводных камней. Уж для вашей задачи оно точно не к чему. И при чем тут QSettings - речь о том что по закрытию программы можно организовать цикл, кот. пройдет по всем табличкам - то есть пройдет вообще по всем компонентам, определит что это QTableView и автоматом сохранит колонки - хоть в QSettings хоть еще куда. А если сохранением занимается сам наследник QTableView - то все таблички формы должны быть заменены на него - то есть уже больше проблем - а если у меня 40 окон с табличками... - даже учитывая возможность ручной правки (по поиску и замене) уишника - все равно напряжно...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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