![]() |
|
|
![]()
|
|
| m9yt |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 27.2.2010 Репутация: нет Всего: нет |
Всем привет.
Есть у меня некая прога, на которой фигурки меняются через различные промежутки времени. Как сделать так, чтобы в тот промежуток, в течение которого фигурки не меняются, ProgressBar мог заполниться? Пример: промежуток 1.2 с - заполнение до 100% за 1.2 с промежуток 2.4 с - заполнение до 100% за 2.4 с и т.д. |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Делаешь startTimer с интервалом 1/10 от нужного времени. В timerEvent увеличиваешь прогресс на 10%. Если достиг 100, делаешь killTimer
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| m9yt |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 27.2.2010 Репутация: нет Всего: нет |
"А ничего, что у меня в timerEvent уже есть какие-либо действия?" Если я стартую новый таймер следом за старым, то фигуры у меня начинают двигаться в 10 раз быстрее. |
|||
|
||||
| m9yt |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 27.2.2010 Репутация: нет Всего: нет |
Проблему решил с помощью сравнивания event->timerId() ну и, соответственно, ввода нового таймера.
Это сообщение отредактировал(а) m9yt - 5.11.2010, 12:29 |
|||
|
||||
| borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
startTimer возвращает id созданного ( запущенного ) таймера. Нужно запоминать этот id
в timerEvent можно узнать id таймера, вызвавшего это событие
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
| m9yt |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 27.2.2010 Репутация: нет Всего: нет |
Одновременно ответили) |
||||||
|
|||||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| m9yt |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 27.2.2010 Репутация: нет Всего: нет |
Вот засада! Ставлю таймер на 1200 мс, всё синхронно меняется. Ставлю на 3600 - ProgressBar начинает опаздывать! (засек секундомером - более 4 сек выходит). Странно
Это сообщение отредактировал(а) m9yt - 5.11.2010, 13:27 |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
показывай. только вырежи лишнее
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| m9yt |
|
||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 27.2.2010 Репутация: нет Всего: нет |
Юзал creator, на форму кидал 1 кнопку и прогресс бар. Вначале вроде совпадает, но через некоторое время прогресс бар отстает
Это сообщение отредактировал(а) m9yt - 5.11.2010, 14:44 |
||||||||
|
|||||||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Может тогда проще запускать один таймер
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| SABROG |
|
||||||||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Имхо стоит присмотреться к классу QTimeLine.
По коду:
R и i сделать членами класса не судьба? Да и R, по-хорошему, должен быть enum'ом.
Код избыточен. Конструктор QPainter автоматически вызывает begin(), а деструктор end().
Как я понимаю это следствие попытки заставить Qt понимать кодировку Windows-1251. Почитайте этот пост. this везде и вся прописывать не нужно, он и так подразумевается автоматически.
Лучше вызывать update().
А тут у меня вообще нет слов. Пользуйте ui->pushButton->deleteLater(), если так надо удалить кнопку. |
||||||||||
|
|||||||||||
| m9yt |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 27.2.2010 Репутация: нет Всего: нет |
Чем же деструктор не устраивает? borisbn, спс. Это сообщение отредактировал(а) m9yt - 5.11.2010, 16:02 |
||||
|
|||||
| borisbn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Этим см. второй Warning
и потом ( если бы это было не в слоте )
выглядет приятнее, чем
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||
|
|||||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Дело даже не в Qt, а в C++. Прямой вызов деструктора объекта не освобождает память выделенный под объект. Смысл вызывать деструктор напрямую есть только в том случае, если вы сами знаете как освободить память, например в случае использования "placement new". |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |