Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Lord Glue от Декабрь 15, 2008, 09:20



Название: QTableWidget && Border
Отправлено: Lord Glue от Декабрь 15, 2008, 09:20
Добрый день! Проблема с QTableWidget - ни у него, ни у QTableWidgetItem  нет свойств по работе с границами ячейки. А очень надо, т.к. экспорт таблицы идет в html. И хочется иметь полный контроль над внешним видом таблиц. Как это побороть???


Название: Re: QTableWidget && Border
Отправлено: SABROG от Декабрь 15, 2008, 12:48
Делегатами. Придется рисовать границы самому.


Название: Re: QTableWidget && Border
Отправлено: Lord Glue от Декабрь 15, 2008, 12:54
А можно подробнее? у itemDelegate нет никаких методов для border`s


Название: Re: QTableWidget && Border
Отправлено: SABROG от Декабрь 15, 2008, 12:59
Придется переопределять метод paint у собственного класса на базе QItemDelegate. Надо будет добавить собственные параметры, которые будут влиять на отрисовку границ (ширина границ, стиль, цвет и т.п.). Тут уже смотри сам, параметры могут быть общими для всей таблицы или каждый QWidgetItem будет иметь свой уникальный параметр. В зависимости от выбора будет разная реализация.


Название: Re: QTableWidget && Border
Отправлено: BRE от Декабрь 15, 2008, 13:22
Добрый день! Проблема с QTableWidget - ни у него, ни у QTableWidgetItem  нет свойств по работе с границами ячейки. А очень надо, т.к. экспорт таблицы идет в html. И хочется иметь полный контроль над внешним видом таблиц. Как это побороть???
А как ты экспортируешь таблицу в html? Как рисунок?
Может лучше формировать таблицу в коде html, т.е. использовать
<TABLE BORDER=1...><TR><TD>...</TD><TD>...</TD></TR></TABLE>.


Название: Re: QTableWidget && Border
Отправлено: Lord Glue от Декабрь 15, 2008, 19:47
Ну естественно в коде html. Как рисунок не надо вообще. И т.к. у td можно писать style (а потом парсить как xml) то в нем и надо бы писать border-bottom и все остальные бордеры.


Название: Re: QTableWidget && Border
Отправлено: BRE от Декабрь 15, 2008, 21:48
Ну естественно в коде html. Как рисунок не надо вообще. И т.к. у td можно писать style (а потом парсить как xml) то в нем и надо бы писать border-bottom и все остальные бордеры.
Так а в чем проблема?


Название: Re: QTableWidget && Border
Отправлено: Lord Glue от Декабрь 16, 2008, 11:08
а проблема в том, чтобы при редактировании tableWidget помимо свойств склеивания ячеек(setSpan),настройки цвета текста в ячейке, а также его шрифта(вид, размер), было бы еще и свойство что-то вроде setBorder... Чтобы каждой ячейке можно было назначить свои границы. К примеру: у ячейки (2,2) поставить border-bottom: solid 2px red
Т.е. у каждой ячейки свои параметры границ


Название: Re: QTableWidget && Border
Отправлено: BRE от Декабрь 16, 2008, 11:27
а проблема в том, чтобы при редактировании tableWidget помимо свойств склеивания ячеек(setSpan),настройки цвета текста в ячейке, а также его шрифта(вид, размер), было бы еще и свойство что-то вроде setBorder... Чтобы каждой ячейке можно было назначить свои границы. К примеру: у ячейки (2,2) поставить border-bottom: solid 2px red
Т.е. у каждой ячейки свои параметры границ
Если тебе нужны эти свойства, то наследуй свой класс от QTableWidgetItem и добавь эти параметры.


Название: Re: QTableWidget && Border
Отправлено: Lord Glue от Декабрь 16, 2008, 12:03
Но у QTableWidgetItem тоже нет таких параметров-методов-свойств. ((


Название: Re: QTableWidget && Border
Отправлено: BRE от Декабрь 16, 2008, 12:09
Но у QTableWidgetItem тоже нет таких параметров-методов-свойств. ((
Наследуй свой класс от QTableWidgetItem и добавь в него что нужно.


Название: Re: QTableWidget && Border
Отправлено: pastor от Декабрь 16, 2008, 12:24
Наследуй свой класс от QTableWidgetItem и добавь в него что нужно.

+ делегат (с переопределенным paint) для отрисовки границ QTableWidgetItem


Название: Re: QTableWidget && Border
Отправлено: SABROG от Декабрь 16, 2008, 13:49
В принципе можно попробывать style sheets (http://doc.trolltech.com/main-snapshot/stylesheet-examples.html#customizing-qtableview) Если не нужна кастомизация каждой ячейки. Правда придется все-равно куда-то данные записать о том какого стиля используются бордюры и цвета, чтобы не парсить текстовый style sheet.