Russian Qt Forum
Ноябрь 22, 2024, 22:57
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Иерархические заголовки таблиц QTableWidget/QTableView...
Страниц:
1
[
2
]
3
4
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Иерархические заголовки таблиц QTableWidget/QTableView... (Прочитано 48294 раз)
ритт
Гость
Re: Иерархические заголовки таблиц QTableWidget/QTableView...
«
Ответ #15 :
Декабрь 27, 2007, 00:38 »
кстати, это так и называется - "спан", а не "Иерархические заголовки"
Записан
Cyrax
Гость
Re: Иерархические заголовки таблиц QTableWidget/QTableView...
«
Ответ #16 :
Декабрь 27, 2007, 12:30 »
Цитировать
void QTableView::setSpan ( int row, int column, int rowSpan, int columnSpan )
Sets the span of the table element at (row, column) to (rowSpan, columnSpan).
Это у кого такой метод ? Ни у QTableView, ни у QAbstractItemView такого нет...
Цитировать
кстати, это так и называется - "спан", а не "Иерархические заголовки"
Мне нужны именно иерархические заголовки, которые, собственно, можно реализовать через спан соседних ячеек. Только для этого потребуются многослойные header'ы, как минимум, двуслойные...
Записан
ритт
Гость
Re: Иерархические заголовки таблиц QTableWidget/QTableView...
«
Ответ #17 :
Декабрь 27, 2007, 13:39 »
Цитата: Cyrax от Декабрь 27, 2007, 12:30
Это у кого такой метод ? Ни у QTableView, ни у QAbstractItemView такого нет...
QTableView, начиная с 4.2
какая версия кутей?
Цитата: Cyrax от Декабрь 27, 2007, 12:30
Мне нужны именно иерархические заголовки, которые, собственно, можно реализовать через спан соседних ячеек. Только для этого потребуются многослойные header'ы, как минимум, двуслойные...
примерно то, что я нарисовал на пред.странице?
Записан
Cyrax
Гость
Re: Иерархические заголовки таблиц QTableWidget/QTableView...
«
Ответ #18 :
Декабрь 27, 2007, 13:45 »
Цитировать
какая версия кутей?
4.1.4
Цитировать
примерно то, что я нарисовал на пред.странице?
Именно. Спан разве именно это не делает ?
Записан
Cyrax
Гость
Re: Иерархические заголовки таблиц QTableWidget/QTableView...
«
Ответ #19 :
Декабрь 28, 2007, 19:42 »
Может, кто-нибудь проверит, как работает span в Qt 4.2 и выше.
Интересует в первую очередь следующее:
Цитировать
+---------------------------------+
| заголовок |
+---------------+-----------------+
| заголовок. | заголовок |
+---------------+-----------------+
| данные(0,0) | данные(0,1) |
+---------------+-----------------+
Такое можно сделать с помощью span'а (объединение 2-х верхних ячеек + надпись на области обоих ячеек, как будто это одна ячейка) ?
Записан
Cyrax
Гость
Re: Иерархические заголовки таблиц QTableWidget/QTableView...
«
Ответ #20 :
Январь 10, 2008, 23:57 »
Если воспользоваться span'ами, то нужно сделать QHeaderView в составе QTableView многоэтажным. Тогда вопрос будет решён. Останется только интерфейс своего TableView'а удобно оформить.
Если span'ы не использовать, то будет посложнее...
Ещё придётся каким-то образом "уложить" всю информацию, необходимую для заголовков в сигнатуру метода QTableView::headerData(), где секция задаётся одним целым числом. Одним целым числом задать фрагмент иерархического заголовка...
Можно, если формировать его, скажем, складывая по 1000 для каждого следующего уровня.
«
Последнее редактирование: Январь 14, 2008, 09:36 от Cyrax
»
Записан
Karl-Philipp
Гость
Re: Иерархические заголовки таблиц QTableWidget/QTableView...
«
Ответ #21 :
Апрель 02, 2008, 18:22 »
Цитата: Cyrax от Январь 10, 2008, 23:57
Если воспользоваться span'ами, то нужно сделать QHeaderView в составе QTableView многоэтажным. Тогда вопрос будет решён.
Подскажите, пожалуйста, как можно сделать QHeaderView многоэтажным?
Записан
Zmeishe
Гость
Re: Иерархические заголовки таблиц QTableWidget/QTableView...
«
Ответ #22 :
Апрель 03, 2008, 15:15 »
Типа этого ? Три месяца мучался.
«
Последнее редактирование: Апрель 03, 2008, 15:16 от Zmeishe
»
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Иерархические заголовки таблиц QTableWidget/QTableView...
«
Ответ #23 :
Апрель 03, 2008, 15:49 »
Вот теперь расскажи всем как ты это намучил.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Karl-Philipp
Гость
Re: Иерархические заголовки таблиц QTableWidget/QTableView...
«
Ответ #24 :
Апрель 04, 2008, 18:38 »
Цитата: Zmeishe от Апрель 03, 2008, 15:15
Типа этого ? Три месяца мучался.
Да, именно это
. Очень хотелось бы услышать, как это было сделано?
«
Последнее редактирование: Апрель 04, 2008, 18:41 от terlan
»
Записан
Zmeishe
Гость
Re: Иерархические заголовки таблиц QTableWidget/QTableView...
«
Ответ #25 :
Апрель 05, 2008, 08:40 »
Шаг первый - описываю, пока, только стратегию т.к. времени мало.
Создаём свой класс QDataHeaderView - наследуемся от QHeaderView.
В нём создаём два члена
QStandardItemModel *headerModel; // Поскольку заголовок иерархический, то инфу о нём хранить будем в иерархической модели
int rowCountHeader; // Количество уровней в заголовке - равно максимальному количеству уровней в headerModel
Можно было эти два члена засунуть в класс Модели (возможно это и правильно с т.з. Qt), я и так пробовал и эдак - пока не принял окончательного решения где им быть.
перекрываем две функции
QSize sizeHint() const;
void paintSection(QPainter *painter, const QRect & rect, int logicalIndex) const;
Далее в Модель нахомячиваем описание заголовков. Я в Модели сделал QStringList для этого.
Храню как в EhLib C++Builder/Delphi - по привычке
Смотрите на рисунок нижнюю вьюху
0. Дата оплаты
1. Сумма оплаты
2. Ком. сбор
3. Период|Начало
4. Период|Конец
5. Лицевой счёт
6. Показания|День|Начальное
7. Показания|День|Конечное
8. Показания|Ночь|Начальное
9. Показания|Ночь|Конечное
Думаю принцип ясен.
Далее создаём функцию построения headerModel на основе этого списка, должно получится дерево.
По мере построения headerModel отслеживаем максимальную глубину и запоминаем в rowCountHeader
Функцию sizeHint() привожу в сокращённом виде, для простоты
QSize QDataHeaderView::sizeHint() const
{
QSize size = QHeaderView::sizeHint(); // Высота одной строки родительского заголовка, которую он сам вычислил на основе текущего шрифта
size.rheight() *= rowCountHeader; // Увеличиваем до нашего размерчика
return size;
}
Далее создаём функцию
QVariant headerData(int Section, Qt::Orientation orientation, int nRole) const;
Вообще это функция Модели её там надо было перекрывать, но я сделал здесь, т.к. уже написал, что не принял оконч. решения где им быть.
Для работы headerData понадобятся две рекурсивные функции, которые по int Section будут возвращать номер начальной секции группы (ветки) в которую входит Section и номер конечной секции группы.
На основе информации из наших функций - рисуем через перекрытую paintSection
void QDataHeaderView::paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const
{
...
}
Думаю моя стратегия ясна - остальное по ходу пьесы.
Записан
ритт
Гость
Re: Иерархические заголовки таблиц QTableWidget/QTableView...
«
Ответ #26 :
Апрель 05, 2008, 13:08 »
думаю, многие были бы благодарны, если б ты выложил рабочий код
и вообще можно было бы сделать публичный или закрытый раздел для обмена компонентами, на которые не накладывается коммерческая лицензия
Записан
Zmeishe
Гость
Re: Иерархические заголовки таблиц QTableWidget/QTableView...
«
Ответ #27 :
Апрель 05, 2008, 13:18 »
Цитата: Константин от Апрель 05, 2008, 13:08
думаю, многие были бы благодарны, если б ты выложил рабочий код
и вообще можно было бы сделать публичный или закрытый раздел для обмена компонентами, на которые не накладывается коммерческая лицензия
Для этого код нужно очистить он моей конкретной задачи, т.е. сделать выжимку из него.
Записан
ритт
Гость
Re: Иерархические заголовки таблиц QTableWidget/QTableView...
«
Ответ #28 :
Апрель 05, 2008, 14:21 »
ну, будет время - милости просим
у меня тоже поднакопилось уже интересных решений. что-то уже отправил Троллям, что-то требует дошлифовки или более плотного тестирования. одному просто времени на всё не хватает.
Записан
Sergey B.
Программист
Offline
Сообщений: 544
Re: Иерархические заголовки таблиц QTableWidget/QTableView...
«
Ответ #29 :
Апрель 09, 2008, 09:40 »
http://trolltech.com/developer/knowledgebase/faq.2007-09-26.7736043425/
Записан
Страниц:
1
[
2
]
3
4
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...