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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: QTreeWidget resizeColumnToContents  (Прочитано 13915 раз)
andrew.k
Гость
« Ответ #15 : Ноябрь 11, 2011, 02:48 »

это одно и то же. оба работают на основе модели. просто в виджет эта модель встроена. работают они одинаково.

давай проект делай, где нужно два раза resizeMode задавать, иначе что?

подразумевается с точки зрения логики и здравого смысла.
Записан
grin
Гость
« Ответ #16 : Ноябрь 11, 2011, 03:08 »

здравый смысл в том, что содержимое виджета (а точнее модели) я могу менять в тот момент, когда виджет не отражается, но он должен отразить всё правильно в тот момент, когда сделается видимым - хм. для меня, как и для других текущее поведение функции resizeColumnToContents() - это баг - см. https://bugreports.qt.nokia.com/browse/QTBUG-9352


Касательно проекта с QTreeView + QAbstractItemModel - сейчас не до этого - если не забуду сделаю =)
Записан
andrew.k
Гость
« Ответ #17 : Ноябрь 11, 2011, 13:17 »

в сороковых годах миллионы людей считали, что евреи это баг - и их надо исправить. И что это доказывает?

Цитата по ссылке.
Код
C++ (Qt)
"Description
The QTableView's methods resizeColumnToContents(int) and resizeColumnsToContents() [b]do not work as documented![/b]"

Цитата из ассистента.
Код
C++ (Qt)
"Resizes the given column based on the size hints of the delegate used to render each item in the column.
 
Note: [b]Only visible[/b] columns will be resized. [b]Reimplement sizeHintForColumn() to resize hidden columns as well[/b]."


По-твоему, так должен работать ресайз?
Записан
grin
Гость
« Ответ #18 : Ноябрь 11, 2011, 15:51 »

Цитата из ассистента.
Код
C++ (Qt)
"Resizes the given column based on the size hints of the delegate used to render each item in the column.
 
Note: [b]Only visible[/b] columns will be resized. [b]Reimplement sizeHintForColumn() to resize hidden columns as well[/b]."

Где можно увидеть указанный выше фрагмент документации?
Вот фрагмент официальной документации без всяких отсылок к sizeHintForColumn(): http://doc.qt.nokia.com/stable/qtreeview.html#resizeColumnToContents
Цитировать
void QTreeView::resizeColumnToContents ( int column ) [slot]
Resizes the column given to the size of its contents.
See also columnWidth() and setColumnWidth().

Записан
grin
Гость
« Ответ #19 : Ноябрь 11, 2011, 15:54 »

ну и в догонку
https://bugreports.qt.nokia.com/browse/QTBUG-9352 - статут open, резолюшн unresolved - по крайней мере авторы sdk признают что это баг, правда с низким приоритетом.
Записан
grin
Гость
« Ответ #20 : Ноябрь 11, 2011, 17:31 »

из личного опыта работы с QTreeView + QAbstractItemModel - если ты добавил в модель (читай в виджет) колонку после того, как вызывал QHeaderView::serReisizeMode(QHeaderView::ResizeToContents) - то для добавленной колонки размер будет равен treeWidget->header()->defaultSectionSize().

был неправ, нет никакой необходимости задавать режим более одного раза!

З.Ы. избавился от заблуждения - что есть хорошо =). В своё оправдание скажу, что наткнулся на подобных  эфект около недели назад - видимо он был вызван чем-то другим, т.к. чистый тест (см. аттач) показал, что достаточно задать режим 1 раз.
Записан
andrew.k
Гость
« Ответ #21 : Ноябрь 11, 2011, 17:36 »

Это как бы немного больше чем наполовину очевидно из названий функций.
Записан
andrew.k
Гость
« Ответ #22 : Ноябрь 11, 2011, 17:39 »

Цитата из ассистента.
Код
C++ (Qt)
"Resizes the given column based on the size hints of the delegate used to render each item in the column.
 
Note: [b]Only visible[/b] columns will be resized. [b]Reimplement sizeHintForColumn() to resize hidden columns as well[/b]."

Где можно увидеть указанный выше фрагмент документации?
Вот фрагмент официальной документации без всяких отсылок к sizeHintForColumn(): http://doc.qt.nokia.com/stable/qtreeview.html#resizeColumnToContents
Цитировать
void QTreeView::resizeColumnToContents ( int column ) [slot]
Resizes the column given to the size of its contents.
See also columnWidth() and setColumnWidth().



Можно увидеть парой-тройкой сообщений выше. Поверь я его не придумал.
Не углядел. Это из QTableView::resizeColumnToContents.
Значит весь баг в том, что забыли скопировать описание.
Только очень прошу не начинай про то, что это разные контроллы, не смотря на...
« Последнее редактирование: Ноябрь 11, 2011, 17:41 от andrew.k » Записан
andrew.k
Гость
« Ответ #23 : Ноябрь 11, 2011, 17:42 »

По-твоему, так должен работать ресайз?
Ты не ответил на этот вопрос. Картинка в аттаче.
Записан
andrew.k
Гость
« Ответ #24 : Ноябрь 11, 2011, 17:44 »

а вот почему этот "баг" никогда не будет исправлен.

This issue has already been reported in 2005: http://lists.trolltech.com/qt-interest/2005-09/thread01227-0.html
Записан
grin
Гость
« Ответ #25 : Ноябрь 11, 2011, 17:51 »

Не углядел. Это из QTableView::resizeColumnToContents.
Значит весь баг в том, что забыли скопировать описание.
Только очень прошу не начинай про то, что это разные контроллы, не смотря на...

Да, согласен - в  QTableView::resizeColumnToContents - не глянул. При таком note это дейстивтельно только лиш "баг документации"

Касательно картинки =) да, на мой взгляд это правильно, т.к. прыгающая ширина колонок при открытии, закрытии элемента дервера - изрядно напрягает зрение.
Записан
andrew.k
Гость
« Ответ #26 : Ноябрь 11, 2011, 18:13 »

А на мой нет.
Я бы подобное поведение называл бы багом и писал бы разрабам.

С прискорбием сообщаю, что тема закрыта)
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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