Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
CoolONE
0 / 0 / 0
Регистрация: 01.06.2016
Сообщений: 6
1

Визуализация загрузки файлов из ресурсов

01.06.2016, 18:13. Просмотров 353. Ответов 12

Проблема вот в чем: при загрузки большого кол-ва файлов проходит 2-4 секунды после запуска, а воспроизведение этих файлов стоит при запуске. Хочу сделать шкалу загрузки всех файлов, а после этого воспроизведение этих файлов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2016, 18:13
Ответы с готовыми решениями:

Визуализация сортировки файлов (простой файловый менеджер)
Здравствуйте. Только изучаю Qt и пишу простой файловый менеджер. Сделал вывод...

Визуализация картинки после загрузки
Доброго времени суток. не так давно пишу на php и работаю с zend. у меня есть...

Расчёт загрузки ресурсов по суткам
Нужно посчитать загрузку ресурса по суткам. То есть сколько времени из 1440...

Открытие неизвестных файлов, например файлов ресурсов игры для распаковки
Хочу научиться писать программы для открытия неизвестных файлов. например,...

Влияние ресурсов на оперативную память и скрость загрузки
Здравствуйте, помогите пожалуйста разобраться как Unity работает с ресурсами....

12
Wyn
1056 / 638 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
01.06.2016, 19:23 2
Молодцы что хотите. Проблема то в чём?
0
CoolONE
0 / 0 / 0
Регистрация: 01.06.2016
Сообщений: 6
01.06.2016, 20:56  [ТС] 3
Проблема в задержке

Добавлено через 1 минуту
Как я понял само действие загрузки откладывается в фон, а сама программа продолжается.
0
Wyn
1056 / 638 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
01.06.2016, 21:03 4
Не обязательно. Если вы будете работать не через сигналы, а вызывать соответствующие ui функции напрямую, то можно в отдельный поток загрузку и не выводить. Программа правда отвечать на действия пользователя не будет, но вот показывать прогресс загрузки - вполне себе.
0
CoolONE
0 / 0 / 0
Регистрация: 01.06.2016
Сообщений: 6
01.06.2016, 21:21  [ТС] 5
Так я функции напрямую вызываю
0
Wyn
1056 / 638 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
01.06.2016, 22:19 6
Цитата Сообщение от CoolONE Посмотреть сообщение
Так я функции напрямую вызываю
Тогда в чём проблема? Подробнее описывайте наблюдаемое поведение и то, которое хотите получить в результате.
0
CoolONE
0 / 0 / 0
Регистрация: 01.06.2016
Сообщений: 6
02.06.2016, 14:05  [ТС] 7
У меня есть игра. При запуске есть заставка. Раньше я загружал всю музыку из папок расположенных рядом с exe, туда я их закидывал сам. Сейчас портанул это все на Android, там так сделать не получалось, всю музыку запихнул в ресурсы. При запуске сначала музыка загружается из ресурсов сразу после этого воспроизводится. Загрузка занимает много времени, из-за этого музыка стартует с задержкой. Я считаю что единственный выход - сделать при запуске загрузку (как это обычно в играх сделано, с визуализацией), а потом показывать заставку бе задержки.
0
Wyn
1056 / 638 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
02.06.2016, 16:41 8
Ну так делайте. Если делаете в том же потоке, то можно вызывать посреди долгих функций QCoreApplication::processEvents(), чтобы UI обработало события. Или выносите загрузку в отдельный поток и уже оттуда информируйте ui о её прогрессе.
0
CoolONE
0 / 0 / 0
Регистрация: 01.06.2016
Сообщений: 6
02.06.2016, 17:54  [ТС] 9
Как это реализовать? Приведите конкретные примеры.
0
Dmitriy_M
1428 / 1308 / 131
Регистрация: 20.03.2009
Сообщений: 4,677
Записей в блоге: 11
02.06.2016, 19:16 10
Под Android храни файлы в Assests. Поддержка в Qt Assets File System
0
Wyn
1056 / 638 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
02.06.2016, 19:37 11
Цитата Сообщение от CoolONE Посмотреть сообщение
Как это реализовать? Приведите конкретные примеры.
однопоток
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
долгая_функция_загрузки()
{
    int k = 0;
    for (int i = 0; i < filesCount; ++i) { 
        loadFile();
        if (k < filesCount/i) {
            k = filesCount/i;
            m_progressBar->setValue(k);
            qApp->processEvents();
        }
    }
}
В многопоточном тоже самое, только убираете processEvents и вместо прямого вызова setValue() используете объявленный в вашем workerScript сигнал, к примеру, procentChanged(int), который соединяете со слотом setValue(int value) вашего QProgressBar.
1
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
02.06.2016, 19:46 12
Надо ещё предусматривать ситуацию, когда пользователь закрывает программу, во время этого процесса, чтобы всё корректно завершилось.
0
CoolONE
0 / 0 / 0
Регистрация: 01.06.2016
Сообщений: 6
02.06.2016, 21:44  [ТС] 13
Спасибо, попробую
0
02.06.2016, 21:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2016, 21:44

Таймаут для загрузки контента с удалённых web-ресурсов
Я осуществляю загрузку определённого текстового и бинарного контента с...

Написать клиент для загрузки сетевых ресурсов на диск
Нужно написать клиент для загрузки сетевых ресурсов на диск. Как это сделать...

Организовать цикл загрузки из файла однотипных ресурсов с индексом в имени
Есть массив PictureBox и 10 bmp в файле ресурсов Resource1.resx. Имена...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru