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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Что за жуткие тормоза при создании QFileDialog?  (Прочитано 10352 раз)
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #15 : Март 10, 2011, 08:57 »

Цитировать
А причем тут обработчик совершенно другого окна? Которому до звезды чужая файловая модель??
Вот как раз, что ему "до звезды" он и обрабатывает очередь событий.
Записан

Qt 5.11/4.8.7 (X11/Win)
frostyland
Гость
« Ответ #16 : Март 10, 2011, 09:13 »

Цитировать
А причем тут обработчик совершенно другого окна? Которому до звезды чужая файловая модель??
Вот как раз, что ему "до звезды" он и обрабатывает очередь событий.

все-таки не ясно мне. в таком случае все последующие окна должны замерзать.
Однако я провел эксперимент:
после QFileDialog fd; резко метнулся на кнопку "ОТкрыть" и вызвал диалог выбора файлов. Все чики-пуки, быстро и адекватно.

------------
Резюмяшка
Интернет как русскоязычный так и англоязычный полон сетованиями по этому поводу, судя по всему - это та самая проруха, на в-общем-то неплохую Qt-"старуху" ))).  Этот кусок кода явно доверили не тому человеку ).
« Последнее редактирование: Март 10, 2011, 09:30 от frostyland » Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #17 : Март 10, 2011, 12:13 »

Вы когда опен делаете не делайте его от мукомпутора и все будет работать
В винапи реально есть косяк с получением инфо от флоппи дисков (даже если их в системе нет(!!!)), который не лечится _вообще_ никак (ф-ия GetVolumeInformaion и иже с ней возвращают эррор код NotReady с бешеной задержкой). Я на это много времени потратил, решения не нашел. Баг есть в c# также если пощупать класс VolumeInfo (DriveInfo?). Единственный воркэраунд - вырезать диски A: и B: и не обращаться к ним. Но файлмодели кьюта это не умеют.
Записан
frostyland
Гость
« Ответ #18 : Март 10, 2011, 12:21 »

Вы когда опен делаете не делайте его от мукомпутора и все будет работать
В винапи реально есть косяк с получением инфо от флоппи дисков (даже если их в системе нет(!!!)), который не лечится _вообще_ никак (ф-ия GetVolumeInformaion и иже с ней возвращают эррор код NotReady с бешеной задержкой). Я на это много времени потратил, решения не нашел. Баг есть в c# также если пощупать класс VolumeInfo (DriveInfo?). Единственный воркэраунд - вырезать диски A: и B: и не обращаться к ним. Но файлмодели кьюта это не умеют.

У меня даже до опена не доходит )) Я, если Вы заметили по моим постам, даже до этого не дохожу.
Тем не менее, попробовал вот так
Код
C++ (Qt)
QFileDialog fd;
QDir dir2;
dir2.setPath("d:/tmp");
fd.setDirectory(dir2);
QMessageBox::information(m_scheme, "", "");
 
Все равно QMessageBox умирает на 5 секунд.

 
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #19 : Март 10, 2011, 12:24 »

воткните дебаги а еще лучше профилировку QTime'ом на каждую строку.
и передавайте директорию в конструктор диалога
Записан
frostyland
Гость
« Ответ #20 : Март 10, 2011, 12:34 »

воткните дебаги а еще лучше профилировку QTime'ом на каждую строку.
и передавайте директорию в конструктор диалога

Директория в конструкторе не приводит ни к чему.
QTime - непонятно куда его втыкать - главный поток то проходит нормально, тормоза при выводе левого окошка,
а главное - для этого надо корежить исходники Qt - и перекомпилировать.
У меня почему-то библиотека не перекомпилируется - вылезают ошибки всякие - часу на втором компиляции.
Мрачно все это [БУУУУУЭЭЭЭЭЭЭЭЭЭ].
А дебаг не отлавливает, пока я прохожу по строкам, проходит больше 5 секунд и все красиво выстраивается.

Ладно, забил я на это. Сами Qt-шники положили на свой кривой класс как в коде, так и в семплах.  Смеющийся

Записан
silart
Гость
« Ответ #21 : Апрель 19, 2012, 08:11 »

Что интересно, если в "Моем компьютере" нет флоповода, то все работает хорошо, без тормозов. А если он есть, то начинаются жуткие тормоза секунд на 7 при создании диалога.

Кому-нибудь удалось побороть эти глюки или как-то их обойти?

Чем мне не нравятся нативные виндовые диалоги, так это тем, что они создаются почему-то не в середине окна, а где-то сбоку. Может как-то можно заставить их создаваться посередине?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #22 : Апрель 19, 2012, 10:08 »

Может как-то можно заставить их создаваться посередине?
Средствами Qt не получится.
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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