Russian Qt Forum
Ноябрь 24, 2024, 00:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QStandardItemModel и сигнал rowsInserted как его отключить на время...  (Прочитано 4910 раз)
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..

как узнать с кем он соединен чтоб потом его заново соеденить?
Записан
Karl-Philipp
Гость
« Ответ #1 : Май 11, 2009, 14:30 »

мне кажется, что таблица тут не при чём. Всё дело в модели. Модель тормозит при вставке данных.
Записан
ритт
Гость
« Ответ #2 : Май 11, 2009, 15:24 »

а сразу указать нужное кол-во строк/столбцов?
Записан
ритт
Гость
« Ответ #3 : Май 11, 2009, 15:26 »

мне кажется, что таблица тут не при чём. Всё дело в модели. Модель тормозит при вставке данных.
стандардайтеммодель сама по себе медленная. а когда модель/вьюху постоянно дрючат добавлением строк/столбцов, производительность опять ощутимо падает.
Записан
zloyGamer
Гость
« Ответ #4 : Май 11, 2009, 15:39 »

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

НО время от времени надо выводить результат работы...
Записан
ритт
Гость
« Ответ #5 : Май 11, 2009, 15:47 »

я это и сказал. а дисконнектить не советую.
если руки растут откуда обычно растут руки, пиши свою модель.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.128 секунд. Запросов: 21.