Russian Qt Forum

Qt => Model-View (MV) => Тема начата: vertus от Сентябрь 27, 2011, 15:30



Название: QPushButton (или любой QWidget) в заголовке QTableView
Отправлено: vertus от Сентябрь 27, 2011, 15:30
Всем доброго времени суток.

Необходимо отоброжать в горизонтальном заголовке QTableView QPushButton.

Как это можно реализовать?

Спасибо за внимание.


Название: Re: QPushButton (или любой QWidget) в заголовке QTableView
Отправлено: GreatSnake от Сентябрь 28, 2011, 07:52
Как это можно реализовать?
Стандартными средствами никак  :(
Нужно довольно-таки "серьёзно" переписывать QHeaderView.


Название: Re: QPushButton (или любой QWidget) в заголовке QTableView
Отправлено: vertus от Сентябрь 28, 2011, 08:20
Это конечно худший вариант.

Можешь примерно описать что нужно будет там переписывать?


Название: Re: QPushButton (или любой QWidget) в заголовке QTableView
Отправлено: alexman от Сентябрь 28, 2011, 08:47
Поищи по форуму. 100% виджет уже пытались запихать :)


Название: Re: QPushButton (или любой QWidget) в заголовке QTableView
Отправлено: vertus от Сентябрь 28, 2011, 08:51
Спасибо, поищу!


Название: Re: QPushButton (или любой QWidget) в заголовке QTableView
Отправлено: GreatSnake от Сентябрь 28, 2011, 09:39
Не трать время на поиски - здесь решения нет  :(


Название: Re: QPushButton (или любой QWidget) в заголовке QTableView
Отправлено: vertus от Сентябрь 28, 2011, 09:43
У меня пока на ум приходит следующее простое решение:

Отказаться от QHeaderView, и использовать первую строку в качестве заголовка.


Название: Re: QPushButton (или любой QWidget) в заголовке QTableView
Отправлено: alexman от Сентябрь 28, 2011, 09:43
http://www.prog.org.ru/topic_18949_0.html (http://www.prog.org.ru/topic_18949_0.html)

UPDATE: увидел позже, там не виджет, а перегруженная отрисовка - не то!


Название: Re: QPushButton (или любой QWidget) в заголовке QTableView
Отправлено: GreatSnake от Сентябрь 28, 2011, 10:15
У меня пока на ум приходит следующее простое решение:

Отказаться от QHeaderView, и использовать первую строку в качестве заголовка.
Если не требуется интерактивное изменение размера колонки, то можно попробовать. Только отказываться от QHeaderView не стоит, нужно его просто спрятать.
И найти в Qt-ишных примерах как сделать первую строку не прокручиваемой.


Название: Re: QPushButton (или любой QWidget) в заголовке QTableView
Отправлено: vertus от Сентябрь 28, 2011, 10:41
У меня пока на ум приходит следующее простое решение:

Отказаться от QHeaderView, и использовать первую строку в качестве заголовка.
Если не требуется интерактивное изменение размера колонки, то можно попробовать. Только отказываться от QHeaderView не стоит, нужно его просто спрятать.
И найти в Qt-ишных примерах как сделать первую строку не прокручиваемой.

Может все таки осилю переопределение QHeaderView.


Название: Re: QPushButton (или любой QWidget) в заголовке QTableView
Отправлено: asvil от Сентябрь 28, 2011, 12:31
Возмите QtCheckHeaderView, и замените отрисовку на свою PushButton, а вообще это конечно непросто будет сделать.
Если что есть делегат отрисовки кнопки в таблице, обработки нажатия.


Название: Re: QPushButton (или любой QWidget) в заголовке QTableView
Отправлено: vertus от Сентябрь 28, 2011, 12:38
Я смотрел краем глаза твой пример. У тебя идет именно отрисовка, а мне нужен сам виджет. Пусть он даже и заместит собой всю секцию заголовка.

Делегат не катит, он активизируется только при редактировании.


Название: Re: QPushButton (или любой QWidget) в заголовке QTableView
Отправлено: GreatSnake от Сентябрь 28, 2011, 12:53
Если терпит, то в понедельник покажу.


Название: Re: QPushButton (или любой QWidget) в заголовке QTableView
Отправлено: vertus от Сентябрь 28, 2011, 13:48
Если терпит, то в понедельник покажу.

Да, терпит, спасибо!


Название: Re: QPushButton (или любой QWidget) в заголовке QTableView
Отправлено: asvil от Сентябрь 28, 2011, 15:42
Нет, делегат хитрый, активен без необходимости редактирования. Собственно в этом делегате алгоритм отрисовки кнопки в разных состояниях


Название: Re: QPushButton (или любой QWidget) в заголовке QTableView
Отправлено: vertus от Сентябрь 28, 2011, 15:46
Нет, делегат хитрый, активен без необходимости редактирования. Собственно в этом делегате алгоритм отрисовки кнопки в разных состояниях

Он может быть активен без необходимости редактирования только если идет отрисовка, а не создание виджета.