crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Запуск файлов один за другим
frefik
  опции профиля:
сообщение 30.5.2011, 11:28
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 30.5.2011
Пользователь №: 2706

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет. Существует следующая таблица.



Задача запускать файлы поочередно из таблицы и завершать их основываясь на их продолжительности.
Проблема не в qprocess, qtime, qtimer или qtreewidget. Я не могу понять как это организовать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 30.5.2011, 12:19
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 233
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(frefik @ 30.5.2011, 17:28) *
Всем привет. Существует следующая таблица.
Задача запускать файлы поочередно из таблицы и завершать их основываясь на их продолжительности.
Проблема не в qprocess, qtime, qtimer или qtreewidget. Я не могу понять как это организовать.

непонятно что за таблица QTableView или чего. Модель чего ? Базы или список сформированный ? А так, берем текущую позицию, считываем поля, запускаем отдельный поток на проигрывание. Когда он закончится и пеcне конец. Если нажать "СТОП" (вроде есть), то завершаем принудительно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
frefik
  опции профиля:
сообщение 30.5.2011, 12:26
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 30.5.2011
Пользователь №: 2706

Спасибо сказали: 0 раз(а)




Репутация:   0  


QTreeWidget. Можно подробнее, очень надо. Как считывать понятно. На счет потока не понятно, надо что бы сразу же после конца песни запускалась другая.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 30.5.2011, 12:48
Сообщение #4


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Проще всего: посмотреть чужие исходники. К примеру SMPlayer.

А вообще, берем все время трека, затем каждую секунду, к примеру, смотрим текущее положение (если это возможно), и сравниваем.
Также, можно написать сигнал, который будет реагировать на окончание трека. Вы вообще что используете для воспроизведения?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
frefik
  опции профиля:
сообщение 30.5.2011, 13:02
Сообщение #5


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 30.5.2011
Пользователь №: 2706

Спасибо сказали: 0 раз(а)




Репутация:   0  


Дело в том что программа запускает файлы, с помощью программ которые ассоциированные с ними.

алгоритм следующий:
1.процесс запустить(имя программы, файл...)
2. отсчет времени(time.start())
3. проверка, если переменная time приравнивается продолжительности файла, то завершить и подать на обработку следующий файл.


Я впал в какую-то рекурсию, могу представить как проделать это с одним файлом, но как сделать поочередно с файлами.

Пожалуйста отпишитесь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 30.5.2011, 13:09
Сообщение #6


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


То есть Вы через QProcess стартуете?

Прога сама завершается или вы ее сами закрываете? Так как можно было просто поставить waitForFinished(), который, к слову, поддерживает задание времени. Так что можно и от сюда плясать.

Так же можно сделать kill() процессу, через нужное время. Но это убивает прокрутку и паузы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
frefik
  опции профиля:
сообщение 30.5.2011, 13:25
Сообщение #7


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 30.5.2011
Пользователь №: 2706

Спасибо сказали: 0 раз(а)




Репутация:   0  


Да.
Можете привести пример пожалуйста.

Грубо говоря задача следующая:
файл video1.avi, продолжительность 10 минут
файл video2.avi, продолжительность 5 минут
файл video3.avi, продолжительность 34 минут
Задача поочередно файлы, проиграть программой по-умолчанию.
Не просто запустить, а запустить первый подождать(как?) 10 минут, завершить первый, запустить второй и.т.д.

Мне бы пример.
Как бы вы её реализовали?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 30.5.2011, 13:47
Сообщение #8


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


QProcess video;
// movieCount - количество фильмов, ну или tableWidget->rowCount(); или в чем вы там выводите.
for (int i=0; i<movieCount; ++i) {
// нужна прога, которая берет файлы из аргументов. В консоли kmplayer movie.avi. Как то так;
video.start("тут пишем путь к программе", QStringList("тут путь к файлу"));
video.waitForFinished(); // если сама завершится.
video.waitForFinished(10000000000); // если нужно ждать, в msecs
//video.close(); //если само не завершится.
}


Сообщение отредактировал RazrFalcon - 30.5.2011, 13:48
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 30.5.2011, 18:30
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


RazrFalcon, а события GUI (например, таскание окошка) когда обрабатывать будешь?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 30.5.2011, 18:35
Сообщение #10


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Можно во втором потоке запускать.
И да, я просто предложил.
Все равно ТС нужно запускать приложения, а как это сделать без QProcess я не знаю.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.10.2019, 21:22