Russian Qt Forum
Июля 03, 2025, 15:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Повернуть текст на 90 град. в заголовках столбцов  (Прочитано 7937 раз)
fulkabaster
Гость
« : Февраля 07, 2009, 17:52 »

Здравствуйте.

Работаю с QTableWidget. Размер ячеек в силу некоторых причин нужно поставить малым (на один символ), при этом кол-во столбцов немалое. Результат - в названиях столбцов не правильно отображаются цифры (видна только одна из нескольких). Появилась идея повернуть эти цифры на 90 градусов, чтобы они встали вертикально. Тогда при той же ширине столбцов они будут влезать полностью (толщину горизонтального хедэра можно увеличить). Но никак не могу разобраться, как можно повернуть текст.
Помогите, пожалуйста.
Записан
ритт
Гость
« Ответ #1 : Февраля 07, 2009, 18:33 »

отнаследоваться от QHeaderView и перегрузить отрисовку секции. затем скормить свой кастомный хидер своему QTable*
Записан
fulkabaster
Гость
« Ответ #2 : Февраля 08, 2009, 08:11 »

Простите, я не так давно знаком с Qt Улыбающийся
Я правильно понимаю, что имеется ввиду перегрузка функции paintSection  у QHeaderView?
Записан
ритт
Гость
« Ответ #3 : Февраля 08, 2009, 08:32 »

правильно.
Записан
fulkabaster
Гость
« Ответ #4 : Февраля 08, 2009, 10:59 »

Все, что удалось найти об этой функции в мануале:

void QHeaderView::paintSection ( QPainter * painter, const QRect & rect, int logicalIndex ) const   [virtual protected]
Paints the section specified by the given logicalIndex, using the given painter and rect.
You normally would not need to use this function.

Непонятно, что такое logicalIndex и зачем он нужен  Грустный
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Февраля 08, 2009, 16:45 »

Непонятно, что такое logicalIndex и зачем он нужен  Грустный

Проще говоря, это индексы столбцов
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
fulkabaster
Гость
« Ответ #6 : Февраля 22, 2009, 14:57 »

Н-да, пытался че-то сделать, и понял, что пока это рановато для меня Улыбающийся Я с некоторыми пункатми ООП не так плотно знаком (особ. наследование, виртуальные функции), больше на Си приходилось.

Если можно, пару вопросов попроще, также насчет QTableWidget:

1) Как вообще убрать хэдеры? (и вертикальные, и горизонтальные). Пробовал через takeHorizontalHeaderItem:

QTableWidgetItem *item = new QTableWidgetItem;
for (int i=0; i < table->columnCount(); i++)
  item = table->takeHorizontalHeaderItem(i);

Результата никакого - хэдеры остались.

2) Как зафиксировать сетку таблицы? (не дать юзеру возможность менять размеры строк/столбов мышкой)
« Последнее редактирование: Февраля 22, 2009, 15:00 от fulkabaster » Записан
Karl-Philipp
Гость
« Ответ #7 : Февраля 22, 2009, 16:30 »

1) попробуйте заголовки спрятать Улыбающийся
Это можно сделать, например, как сказано в Ассистанте:
Цитировать
Visual Appearance

The table has a vertical header that can be obtained using the verticalHeader() function, and a horizontal header that is available through the horizontalHeader() function. The height of each row in the table can be found by using rowHeight(); similarly, the width of columns can be found using columnWidth(). Since both of these are plain widgets, you can hide either of them using their hide() functions.

2) для фиксации размеров:
- получаем заголовок (горизонтальный) таблицы c помощью метода
Цитировать
QHeaderView * QTableView::horizontalHeader () const

- указываем режим изменения:
Цитировать
void QHeaderView::resizeSections ( QHeaderView::ResizeMode mode )
в качестве ResizeMode указать QHeaderView::Fixed
« Последнее редактирование: Февраля 22, 2009, 17:31 от terlan » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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