Russian Qt Forum

Qt => Model-View (MV) => Тема начата: zloyGamer от Май 11, 2009, 10:26



Название: QStandardItemModel и сигнал rowsInserted как его отключить на время...
Отправлено: zloyGamer от Май 11, 2009, 10:26
подскажите может кто сталкивался с такой ситуацией..
есть QStandardItemModel - в которого часто добавляются строки - отчего жутко тормозит QtableView - который отображает все что там поступило, надо на время отключить/отсоеденить сигнал rowsInserted и затем(через некоторое количество обновлений) вновь задействовать..
но отчего его отсоединять понять немогу
вот как оно все выглядит:
Код:
  m_model_tmp=new QStandardItemModel( this );
  ui->tableView_all_records->setModel(m_model);

  b=m_model->disconnect(m_model,SIGNAL(rowsInserted( const QModelIndex & , int, int ) ), ui->tableView_all_records, 0);
  qDebug() << "ui->tableView_all_records->disconnect   "<< b;
  // после этого всеравно ui->tableView_all_records пытается обновить все изменения в количестве строк

  b=m_model->disconnect(m_model,SIGNAL(rowsInserted( const QModelIndex & , int, int ) ), 0, 0);
  qDebug() << "ui->tableView_all_records->disconnect    "<< b;
  //а после этой строки ui->tableView_all_records - уже не пытается обновлять количество строк :)

тоесть получается сигнал rowsInserted - соединен не с ui->tableView_all_records а через какогото посредника который в свою очередь передает этот сигнал в  ui->tableView_all_records..

как узнать с кем он соединен чтоб потом его заново соеденить?


Название: Re: QStandardItemModel и сигнал rowsInserted как его отключить на время...
Отправлено: Karl-Philipp от Май 11, 2009, 14:30
мне кажется, что таблица тут не при чём. Всё дело в модели. Модель тормозит при вставке данных.


Название: Re: QStandardItemModel и сигнал rowsInserted как его отключить на время...
Отправлено: ритт от Май 11, 2009, 15:24
а сразу указать нужное кол-во строк/столбцов?


Название: Re: QStandardItemModel и сигнал rowsInserted как его отключить на время...
Отправлено: ритт от Май 11, 2009, 15:26
мне кажется, что таблица тут не при чём. Всё дело в модели. Модель тормозит при вставке данных.
стандардайтеммодель сама по себе медленная. а когда модель/вьюху постоянно дрючат добавлением строк/столбцов, производительность опять ощутимо падает.


Название: Re: QStandardItemModel и сигнал rowsInserted как его отключить на время...
Отправлено: zloyGamer от Май 11, 2009, 15:39
>стандардайтеммодель сама по себе медленная. а когда модель/вьюху постоянно дрючат добавлением строк/столбцов, производительность опять ощутимо падает.
я неоднократно это проверил - при вставке по одной строке работает гораздо медленнее чем при вставке диапазона строк,
а если вставлять строки после записи:
m_model->disconnect(m_model,SIGNAL(rowsInserted( const QModelIndex & , int, int ) ), 0, 0);
то ещё гораздо быстрее...

НО время от времени надо выводить результат работы...


Название: Re: QStandardItemModel и сигнал rowsInserted как его отключить на время...
Отправлено: ритт от Май 11, 2009, 15:47
я это и сказал. а дисконнектить не советую.
если руки растут откуда обычно растут руки, пиши свою модель.