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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Быстродействие QUiLoader  (Прочитано 4173 раз)
gigabyte
Гость
« : Март 22, 2010, 17:34 »

Это сообщение - продолжение моего поста в секции QtScript на которое никто так и не ответил.
Теперь вопрос звучит следующим образом:
Есть форма загружаэмая через QUiLoader, и есть та же форма скомпиленная через uic и засунутая в программу.
На этой форме находится QTableView с данными  (много данных)
Так вот, если смотреть на форму загруженную через QUiLoader то создается ощущение что при каждом движении она пересоздается заново т.е. даже изменение ширины колонки или переход с одной ячейки на другую вызывает 3-5 секундное помутнение рассудка у программы при 100%-й загрузке на проц.
При прочих равных условиях встроенная в проложпение форма работает прекрасно.

Где есть косяк? Есть ли где какой-то класс для кеширования загруженных виджетов или что-то подобное?

Заранее спасибо
Записан
Rcus
Гость
« Ответ #1 : Март 22, 2010, 18:34 »

Ну так это... тестовое приложение собрать и под профайлером прогнать было бы неплохо. А QUiLoader только создает виджеты и задает свойства по .ui файлу. После загрузки его можно удалить.
Записан
gigabyte
Гость
« Ответ #2 : Март 22, 2010, 18:49 »

В том то и проблема шо ганял под профайлером, но он ничего толкового не показывает.
А шоб увидеть шото толковое надо собирать всю Qt с под профайлером
Может кто-то уже сталкивался с этим
Записан
gigabyte
Гость
« Ответ #3 : Март 23, 2010, 10:49 »

Создал тестовое предложение :
Код:
 var db = QSqlDatabase.addDatabase("QSQLITE","temp");
 db.setDatabaseName("./temp.db");
 if(db.open()) {
var loader = new QUiLoader();
var f = new QFile("viewgoods.ui");
if(f.open(QIODevice.OpenMode(QIODevice.ReadOnly))) var viewgoods = loader.load(f);
var tableModel = new QSqlQueryModel(viewgoods)
var query = new QSqlQuery(db);
if(query.exec('select * from localdb')) {
tableModel.setQuery(query);
viewgoods.tableView.setModel(tableModel);            
viewgoods.show();
}
 }
QCoreApplication.exec();
Работает замечательно. Значит проблема у меня в коде. Буду искать
Записан
gigabyte
Гость
« Ответ #4 : Март 23, 2010, 16:14 »

Вопрос снят.
Есть очень интерсное приложение Microsoft Application Verifier котороэ у меня стояло, так вот оно и давало ве эти глюки. Удалил и все начало не то шо бегать - лётать
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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