Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Zmey от Январь 31, 2005, 10:32



Название: Высота строк в QTable
Отправлено: Zmey от Январь 31, 2005, 10:32
Как сделать все строки в QTable определенной высоты? Чтобы по-умолчанию высота строк была не 20-25, как есть, а, например, 15.
В цикле setRowHeight для каждой строки - крайне медленно.


Название: Высота строк в QTable
Отправлено: Hordi от Июнь 07, 2006, 13:15
И я столкнулся...
Qt-3.3.6. Визуально при изменении высоты крайне нехорошо видна перерисовка. Как быть, setRowHeight явно неудачное решение...


Название: Высота строк в QTable
Отправлено: Sergeich от Июнь 07, 2006, 14:13
Можно поробовать так:
Код:
setUpdatesEnabled(false);
for ( int i = 0; i < numRows(); i++ )
  setRowHeight( h );
setUpdatesEnabled(true);
update();


Название: Высота строк в QTable
Отправлено: Hordi от Июнь 07, 2006, 14:45
В общем работает, осталась только проблема очистки старых записей, если строк меньше чем было...

добавлено спустя 3 минуты:

 Да, как перерисовать все видимые ячейки? Пока делаю так, но горбато...

   unsigned int cnt = NEW_ROW_CNT;
   if(numRows() > cnt)
      setNumRows(0);

   setUpdatesEnabled(false);
   
   setNumRows( cnt );
   while(cnt--)
      setRowHeight(cnt,ROW_HEIGHT);
   
   setUpdatesEnabled(true);

добавлено спустя 4 минуты:

    int r = height() / ROW_HEIGHT + 2;
   if(r>cnt)
      r = cnt;
   
   int c = numCols();
   while(r--){
      for(int k=0;k<c;++k)
         updateCell(r,k);
   }