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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Повернуть текст на 90 град. в заголовках столбцов  (Прочитано 7735 раз)
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.104 секунд. Запросов: 23.