crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Как установить необходимую и достаточную ширину для талицы ?
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Алексей1153 Дата 3.4.2011, 18:43
 
Цитата(flankerr @ 31.3.2011, 20:09) *
Изменять ширину колонок нельзя! Надо изменить (подогнать) ширину окна.

как-то я в похожем случае применил решение "в лоб" - если было несоответствие линейного размера, но это решалось размером главного окна, но запускал таймер (100мс нормально) где по некоему закону (в простейшем случае - попиксельно) менял размеры окна в нужную сторону, пока не добивался "правильности". Визуально смотрелось симпатично - плавно, но быстро край перемещался в нужное положение

Если спроецировать этот способ на САБЖ, то достаточно добавлять по 1 пикселу, пока не станет НЕ ВИДНА полоса прокрутки. Начальное значение - примерно такое, как ширина всех колонок, ограничение (на всякий случай) - скажем, вырастать не более, чем на 10% от ширины всех колонок
flankerr Дата 1.4.2011, 16:09
 
Цитата(abc @ 1.4.2011, 14:17) *
ну, я всё-таки не соглашусь,
Повторюсь! Ты мыслишь в рамках одной конкретной системы с одними конректными настройками визуализации. Предположим WInXP тема "луна" но в линухе или Win7 уже всё по другому будет да в той же WinXP с другой темой может быть всё по другому.
Впрочем у меня нет задачи убеждать кого либо ;) Когда столкнёшься тогда сам поймёшь. Но всё равно спасибо за участие.

to ALL:
Проблема есть, решения пока нет. Надеюсь услышать коснтруктивные мысли для решения задачи.


abc Дата 1.4.2011, 13:17
  ну, я всё-таки не соглашусь, потому как сумму всех колонок на любом компе Qt посчитает правильно, а тебе останется только добавить чуть-чуть, я думаю, что это "чуть-чуть", если оно не зависит от кромок колонок, то есть от количества колонок, будет константно.. В дизайнере попробуй QTableWidget - если сжать его до уровня конца последней колонки, при предпросмотре увидишь горизонтальную прокрутку, а если добавить чуть-чуть, всё будет хорошо... добавь чуть-чуть, не ерепенься!! :ireful:
flankerr Дата 1.4.2011, 13:08
  Вопорос задан правильно, но пришлось поставить акцент на очевидный факт если внимательно прочитать вопрос :)

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

Если ширина всего окна получиться больше ширины разрешения рабочего экоана значит так тому и быть ;) Это уже совсем другая история.
vankleef Дата 1.4.2011, 11:36
  ну вот ты по-человечески вопрос свой написал.
а если ширина всего окна получится больше разрешения экрана?

считаешь ширину виджета, ширину окна, "чуть чуть"="ширина окна" - "ширина виджета".
ставишь размер окна на ширину виджета + чутьчуть, как и было написано и никакого гемороя.
flankerr Дата 1.4.2011, 10:30
 
Цитата(madnessw @ 1.4.2011, 11:18) *
resizeColumnsToContents();
или в ручную
for (int i=0;i<columnCount();i++)
{
setColumnWidth(i,frameWidth()/columncount());
}
примерно так
(лень правильно писать)

Мне надо установить ширину окна, а ты предлогаешь изменить ширину колонок. Причём два твоих варианта решают разные задачи! ;)
Первый случай подгняет ширину колонок под содержимое и игнорирует ширину окна, т.е. все колонки могут и не поместиться в окне или наоборот стать значительно меньше ширины окна.
Второй способ - это эдакий ручной стреч.

В общем ты совсем не понял моего вопроса ;)
madnessw Дата 1.4.2011, 10:18
  resizeColumnsToContents();
или в ручную

for (int i=0;i<columnCount();i++)
{
setColumnWidth(i,frameWidth()/columncount());
}

примерно так
(лень правильно писать)
flankerr Дата 1.4.2011, 9:54
 
Цитата(vankleef @ 31.3.2011, 20:58) *
может немного не в тему, но view->horizontalHeader()->setResizeMode(int columnNo,QHeaderView::Stretch);

Это совсем мимо.

Цитата(abc @ 31.3.2011, 21:00) *
сумма всех ширин колонок + чутьчуть :D

Нет уж нет уж! :D Эти "чутьчуть" потом там гемором выходят - туши свет ! :o:
abc Дата 31.3.2011, 20:00
  сумма всех ширин колонок + чутьчуть :D
vankleef Дата 31.3.2011, 19:58
  может немного не в тему, но
view->horizontalHeader()->setResizeMode(int columnNo,QHeaderView::Stretch);
или
view->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
растягивает столбец(столбцы) по ширине QtableView.
и, по идее, при изменении размера всего окна пропорционально будет изменяться ширина виджета => колонок
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.4.2024, 0:37