| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Прогресс копирования(сигнал QFile - bytesWritten) |
| Автор: franzR 23.2.2011, 16:28 | ||||||||
| Qt 4.7.0, QtCreator 2.0.1, Win XP SP3 (32bit) Ребят, тут такое дело. Не могу понять почему не срабатывает сигнал при копировании. В консоль ничего не пишет. Полазил по инету не смог разрулить, обращаюсь к вам. Копирование само происходит, а вот прогресс бар не мычит и не телится... Собственно класс: .h
.cpp
Запускаю поток так:
Ставлю брекпоинт на:
На место останова никогда не попадаю, значит и emit который далее по тексту не происходит. Подскажите что не так сделал... |
| Автор: bsa 23.2.2011, 20:21 |
| думаю, не будет работать, так как в потоке копирования нет цикла обработки событий (EventLoop). |
| Автор: alexvs11 23.2.2011, 20:27 |
| для копирования не обязательно новый поток, можно и в один поток с модальным QProgressBar |
| Автор: Modul 23.2.2011, 23:26 |
А как он у Вас реализован в консоли ? Простите, спросил... |
| Автор: borisbn 24.2.2011, 03:08 |
| а ты уверен, что ф-ция copy вообще должна выдавать сигнал bytesWritten ? если реализуешь copy вручную: read из одного, write в другой, то м.б. и будет вызываться |
| Автор: franzR 24.2.2011, 15:22 | ||||||
| Спасибо всем что не остались равнодушными к вопросу! bsa:
Логично, согласен! alexvs11:
это хорошо, но у мну прогресс бар на форме, и хотелось бы его юзать не просто показав что скопировался какой то файл, а вот если он большой то прям весь процесс копирования. borisbn:
Да тут вы совершенно правы QFile не имеет такого сигнала по документации! Хотя при connect выдает в списке доступные сигналы и среди них есть bytesWritten. Странно что при connect не ругается... borisbn, bsa - спасибо, натолкнули на мысль, буду развивать. |
| Автор: borisbn 24.2.2011, 15:51 |
имеет, т.к. он унаследован от QIODevice, в котором этот сигнал и объявлен потому и не ругается, что всё ОК. всё-таки попробуй вручную |
| Автор: franzR 28.2.2011, 15:29 | ||
| Долго молчал, извиняюсь, подгрузили работой, не было времени разбираться. Реализовал копирование таким образом:
divider - приходит из класса кот. запускает на копирование поток, зависит от размера копируемого файла. Метод работает медленно до ужаса! С большими файлами жрет оперативу просто капец! Как бы его так оптимизировать чтоб копировалось не хуже чем в Total Comander например или винде? Там копирование отображает и прогресс, и быстро работает без кушания оперативы... |
| Автор: borisbn 28.2.2011, 15:34 |
| Для Windows лучше всего использовать winAPI, а именно http://msdn.microsoft.com/en-us/library/aa363852(v=vs.85).aspx сделать на Qt так же быстро, как в винде и кроссплатформенно, скорее всего не получится. Если нужно на ОС, отличных от винды - думаю стОит смотреть их API |
| Автор: franzR 2.3.2011, 11:06 |
| Раз более предложений по копированию нет, то тему можно считать закрытой. Еще раз спасибо всем кто откликнулся, особенно borisbn! |