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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопросик по QHeaderView  (Прочитано 3615 раз)
Jo
Гость
« : Декабрь 09, 2009, 14:28 »

Выставляю в горизонтального заголовка setStretchLastSection(true);

Т.о. последняя колонка прилипает к правому краю моей вьюхи, собственно это метод и делает.

Вопрос: не подскажите как сделать что бы последняя колонка не двигалась если я меняю размер соседней.
т.е. нужно вот что:


|___|___|
|     |     |
|     |     |
|     |     |
|     |     |


|_____|_|
|        |  |
|        |  |
|        |  |
|        |  |


|_____||
|        ||
|        ||
|        ||
|        ||

Выставляю максимальный размер самого виджета не помогает, хотя может и не должно помочь. Т.е. если я расширяю первую колонку то внизу попросту появляется горизонтальный скролл и граница второй колонки уходит в право.

Чего то я колупаюсь и понять не могу.
Помогите пож


В общем нужно что бы сплиттер который посередине, таскался только в этих размерах.

Нашел такой метод setMinimumSectionSize, а вот Максимальный размер секции не знаю как установить. (((
« Последнее редактирование: Декабрь 09, 2009, 15:06 от Jo » Записан
Павел_F.
Гость
« Ответ #1 : Декабрь 09, 2009, 16:22 »

У меня все работает именно так, как вы хотите.
Ничего для этого не изобретал.
Код:
  Table = new QTableWidget( this);
  Table->setRowCount( 0);
  Table->setColumnCount( 3);
  Table->resizeColumnsToContents();
  Table->resizeRowsToContents();
  QHeaderView * headH = Table->horizontalHeader();
  headH->setStretchLastSection( true);
Никаких скролов не появляется...
PS: правда Qt 4.6.0
Записан
Павел_F.
Гость
« Ответ #2 : Декабрь 09, 2009, 18:07 »

понял я в чем проблема. Вы, задавая MinimumSectionSize, задаете его и для последней секции. И поэтому даже задавая stretchLastSection она, последняя секция, не может быть меньше  minimumSectionSize. В моем же случае она может хоть до нуля уменьшаться. Вывод: не задавайте MinimumSectionSize или терпите появление скролов.
Записан
Jo
Гость
« Ответ #3 : Декабрь 09, 2009, 20:08 »

просто когда последняя секция становится меньше minimumSectionSize, она начинает убегать за приделы таблицы, поэтому скрол и появляется.

Проблема не в том что мне скрол не нравится, а в том что я хочу что бы последняя секция не убегала. т.е. что бы мог менять размер секций внутри таблицы, и последняя секция не выходила за пределы.

Порылся в исходнике шапки увидел в методе mouseMoveEvent что походу без переопределения этого метода проблему не решить (((

Нет других путей?

Да и сплиттер последней секции надо вообще как то отключить, что бы нельзя было его таскать.......
« Последнее редактирование: Декабрь 09, 2009, 20:17 от Jo » Записан
Павел_F.
Гость
« Ответ #4 : Декабрь 09, 2009, 21:44 »

Ну... все хорошо в "стандартных" задачах. То что вы говорите это не нормальное, не привычное поведение таблицы. и вариантов я вижу три:
- Вы не совсем верно выбрали путь и, возможно, стоит пересмотреть ваш взгляд на интерфейс. И использовать не таблицу или не только ее.
- Вам действительно это надо. Тогда почти с нуля писать свою реализацию "странной" таблицы.
- Я не правильно понял то, что вы хотите сделать.
А окончательный выбор за вами.
Записан
Jo
Гость
« Ответ #5 : Декабрь 09, 2009, 22:26 »

Согласен с тем что таблица "странная", да и переписывать с нуля думаю тоже не выход. Переопределю нужный метод и надеюсь заработает так как надо мне.

Думал что можно стандартными методами настроить, вот и спрашивал.
Записан
Павел_F.
Гость
« Ответ #6 : Декабрь 09, 2009, 22:45 »

mouseMoveEvent, скорее всего, не решит все что вам не нравится у QTableWidget. Думаю переписывать придеться гораздо больше всего.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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