Russian Qt Forum

Qt => Model-View (MV) => Тема начата: mal от Апрель 26, 2010, 14:08



Название: перерисовать QTableWidget - как?
Отправлено: mal от Апрель 26, 2010, 14:08
Ситуация: меняю размер высоты строк в таблице используя verticalHeader()->setDefaultSectionSize( int );
Делаю это так - зову модальный диалог, в спине меняю значение и шлю сигнал. Далее в слоте парента его отрабатываю.
При этом имеем следующий глюк (см. вложение) : строки таблицы перестраиваются, а вертикальный хедер перестраивается только после закрытия диалога.
Не помогает установить тип коннекта Qt::QueuedConnection, ни позвать в слоте принудительно update у QTableWidgeta, ни позвать udpate самого хедера - verticalHeader()->update().
Пробовал делать диалог немодальным - все равно поведение таблицы такое же.
После закрытия диалога хедер таблицы перестраиватся.
Вопрос - как принудительно сделать полный рефреш таблицы в моей ситуации?

Qt-4.6.1

*
попробовал плюс ко всему методы QTableWidget  render и repaint  - также никакого эффекта пока висит диалог.


Название: Re: перерисовать QTableWidget - как?
Отправлено: alexman от Апрель 26, 2010, 14:22
Попробуй void QTableView::setRowHeight ( int row, int height )?


Название: Re: перерисовать QTableWidget - как?
Отправлено: mal от Апрель 26, 2010, 14:31
не помогает.
verticalHeader()->setDefaultSectionSize( int ) - перестраивает высоту строк всей таблицы и если не юзать диалог, а изменять размер вслепую - то все отлично.
Но я хочу, чтоб юзер видел что и как он настраивает


Название: Re: перерисовать QTableWidget - как?
Отправлено: mal от Апрель 26, 2010, 15:18
Решил вот так :
Код:
void CWinpl::slot_set_row_height(int height)
{
// p_tbl - это QTableWidget*
p_tbl->verticalHeader()->setDefaultSectionSize( height );
p_tbl->setUpdatesEnabled(false);
p_tbl->verticalHeader()->hide();
p_tbl->verticalHeader()->show();
p_tbl->setUpdatesEnabled(true);
}

так срабатывает :-\

Кутовый баг ? ???