Задержка действия |
Здравствуйте, гость ( Вход | Регистрация )
Задержка действия |
AD |
23.6.2008, 18:58
Сообщение
#1
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Хочу сделать следующее. Идет какая-то загрузка, при этом работает полоса загрузки файлов. Эта полоса загрузки должна исчезнуть, когда закончено считывание! Но у меня есть желание сделать кое-какую задержку (в 1-2 сек.), прежде чем она исчезнет. Как это сделать? Какой функцией можно воспользоваться?
|
|
|
Litkevich Yuriy |
23.6.2008, 19:33
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Ну а как ты собираешся эту полосу убрать, наверное функцию какуюто будешь делать? Может в место нее вставить функцию, которая таймер будет взводить?
|
|
|
ViGOur |
23.6.2008, 19:52
Сообщение
#3
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Для этих целей можно использовать: void QThread::msleep ( unsigned long msecs )
Или как сказал Litkevich Yuriy используй QTimer Class Reference |
|
|
AD |
23.6.2008, 22:16
Сообщение
#4
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Ну а как ты собираешся эту полосу убрать, наверное функцию какуюто будешь делать? Может в место нее вставить функцию, которая таймер будет взводить? Убрать полосу легко - void QMainWindow::removeDockWidget ( QDockWidget * dockwidget ) , так как она располагается на прикрепленном виджете! Я не понял, как можно использовать указанные функции, если mspleep - защищенная статическая функция? А у меня класс - производный от QMainWindow! |
|
|
Litkevich Yuriy |
23.6.2008, 22:31
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
ну ты же от куда-то будешь вызывать removeDockWidget(), он же не сам вызывается.
вот там где будешь вызывать, там и зделать задержку. я бы через однократный таймер стал делать (хотя и не делал еще) может способ который предложил ViGOur лучше, я еще про это не читал даже. |
|
|
ViGOur |
23.6.2008, 23:01
Сообщение
#6
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
|
|
|
AD |
23.6.2008, 23:03
Сообщение
#7
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Цитата ну ты же от куда-то будешь вызывать removeDockWidget(), он же не сам вызывается. вот там где будешь вызывать, там и зделать задержку. я бы через однократный таймер стал делать (хотя и не делал еще) может способ который предложил ViGOur лучше, я еще про это не читал даже. Так-с . Уже интересно! У меня вопрос - если я уже использую функцию timerEvent. Я могу создать локальный класс QTimer и использовать его для однократной задержки? |
|
|
Litkevich Yuriy |
24.6.2008, 0:07
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
использовать его для однократной задержки? см. Timer::singleShot(600000, &app, SLOT(quit())); но эту статическую фукцию если применять несколько раз в программе, можно напаротся на грабли, поэтому посмотри может лучше сделать какой-нибудь таймер однократным. Ведь у каждого потомка от QObject есть тамеры и метод setSingleShot() и еще есть QBasicTimer |
|
|
AD |
26.6.2008, 11:58
Сообщение
#9
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Данный вопрос решен с помощью указанного таймера следующим образом:
Всем спасибо! p.s. Тему можно закрыть. |
|
|
Текстовая версия | Сейчас: 27.12.2024, 5:49 |