Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Tonal от Октябрь 01, 2007, 13:26



Название: Qt 4.3.1 Высота строки в таблице
Отправлено: Tonal от Октябрь 01, 2007, 13:26
Встала такая задачка - сделать все строки в таблице одинаковой высоты.
Причём в строку должно вмещаться 2 строки текста.

Полазил по ассистенту - нашёл, что это можно сделать, выставив для вертикального QHeaderView resizeMode в QHeaderView::Fixed и задав подходящий defaultSectionSize в пикселах.

Кто-нибудь знает как можно просто его рассчитать?


Название: Re: Qt 4.3.1 Высота строки в таблице
Отправлено: pastor от Октябрь 01, 2007, 13:50
Можно поиграться с QFontMetrics для определения области занимаемой текстом


Название: Re: Qt 4.3.1 Высота строки в таблице
Отправлено: Aleksey_A от Октябрь 02, 2007, 10:12
Для выравнивания строк по высоте я использовал setRowHeight(row_num,TableRowHeight)

TableRowHeight=17;
int i=0;
while (!in.atEnd())
   {
      tableWidget->setRowHeight(i,TableRowHeight);
   
                in >> SomeValue;

      QTableWidgetItem *Item = new QTableWidgetItem(tr("%1").arg(SomeValue));
      Item->setTextAlignment(Qt::AlignVCenter);
      tableWidget->setItem(i,0,Item);

                i++;
    }

а насчет 2 строк текста может быть попробовать установить свойство wordWrap=true, для автоматического переноса слов?


Название: Re: Qt 4.3.1 Высота строки в таблице
Отправлено: Tonal от Октябрь 02, 2007, 13:07
Сделал так:
Код:
#python
  if rowSize and v_header:
    v_header.setResizeMode(QtGui.QHeaderView.Fixed)
    QtGui.QFontMetrics(view.font())
    v_header.setDefaultSectionSize(
      QtGui.QFontMetrics(view.font()).height() * rowSize)
Где rowSize - количество строчек, а v_header - вертикальный заголовок.
Единственный косяк в том, что при rowSize = 1 высота строки меньше высоты по умолчанию.
Это из за того, что учитывается возможный размер чекбокса или иконки.
Но это мне было воспроизводить лениво.

2Aleksey_A
wordWrap=true делает строки разной высоты, что не устраивает заказчика.