![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
sidsukana |
![]()
Сообщение
#1
|
Участник ![]() ![]() Группа: Участник Сообщений: 158 Регистрация: 23.12.2010 Из: Челябинск Пользователь №: 2296 Спасибо сказали: 10 раз(а) Репутация: ![]() ![]() ![]() |
Здравствуйте. Есть такая проблема.
Есть объект - интерфейс, есть объект поиска. При нажатии кнопки поиск, происходит создание потока, и в потоке создается объект поиска. Поиск - формирует QStandardItemModel и применяет его на QTableView в объект интерфейса посредством ивентов. (забыл сказать, что вынесено все в поток изза того что формируется модель 10000+ строк и 2 столбца, поиск ведется по одному символу из другого бинарного файла (ну это не важно так как сам поиск в цикле проходит быстро) Так вот, при первом запуске программы, первый поиск проходит реактивно и буквально за секунду табличка сформирована и результат есть в вьювере. Но стоит запустить снова такой же поиск как интерфейс зависает и все работает как будто без потоков и ивентов(блок интерфейса на 5-10 секунд и тд.) Самое интересное что поток проходит успешно и завершается. А зависание происходит после выполнения потока. Прошу помощи ![]() |
|
|
xls |
![]()
Сообщение
#2
|
Студент ![]() Группа: Участник Сообщений: 44 Регистрация: 6.9.2010 Пользователь №: 2013 Спасибо сказали: 7 раз(а) Репутация: ![]() ![]() ![]() |
Вопрос : передаете ли вы сформированную в доппотоке модель в основной поток ( moveToThread) ?. Если нет, то это надо делать.
Проблема может быть в том, что при присвоении новой модели QTableView он пытается удалить предыдущую модель и время уходит на это. В этом случае можно сделать так: отсоединить старую модель от QTableView , назначить новую , послать старую в другой поток и вызвать ее метод deleteLater(). Более точную инфу может показать только вскрытие ) (исходного кода). |
|
|
sidsukana |
![]()
Сообщение
#3
|
Участник ![]() ![]() Группа: Участник Сообщений: 158 Регистрация: 23.12.2010 Из: Челябинск Пользователь №: 2296 Спасибо сказали: 10 раз(а) Репутация: ![]() ![]() ![]() |
Нет не использовал. Т.е при создании потока в конструкторе вызывать moveToThread(this) ? А как из этого потока допустим отсылать данные в основной не через ивент? И можете подсказать, что это за метод отсоединения модели от вьювера?
![]() |
|
|
sidsukana |
![]()
Сообщение
#4
|
Участник ![]() ![]() Группа: Участник Сообщений: 158 Регистрация: 23.12.2010 Из: Челябинск Пользователь №: 2296 Спасибо сказали: 10 раз(а) Репутация: ![]() ![]() ![]() |
https://bitbucket.org/sidsukana/qsw жду помощи
![]() |
|
|
sidsukana |
![]()
Сообщение
#5
|
Участник ![]() ![]() Группа: Участник Сообщений: 158 Регистрация: 23.12.2010 Из: Челябинск Пользователь №: 2296 Спасибо сказали: 10 раз(а) Репутация: ![]() ![]() ![]() |
Опять я прослакал
![]() |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 14.3.2025, 1:07 |