Russian Qt Forum
Май 02, 2024, 03:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QMassageBox + QTimer как вывести отсчёт времени?  (Прочитано 10808 раз)
Jkc
Гость
« : Май 19, 2005, 14:07 »

Привет, есть такая задача.
Нужно в QMassageBox вывести время отсчёта с момента запуска QMassageBox.
Начиная с нуля т.е. 00:00:00 -> и вперёд
формат ЧЧ:ММ:СС
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #1 : Май 19, 2005, 15:33 »

Наследуешся от QMessageBox
Вставляешь тред как член класса
Тред будет время выводить

Вызываешь свой клас из базы и вперед!
Записан
Jkc
Гость
« Ответ #2 : Май 19, 2005, 15:49 »

1. Что такой тред?
2. Мне нужно не текущее время выводить а отсчёт времени.
Что то типа секундомера.
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #3 : Май 19, 2005, 16:12 »

Цитата: "Jkc"
1. Что такой тред?
2. Мне нужно не текущее время выводить а отсчёт времени.
Что то типа секундомера.


1. Тред - это процесс идущий паралельно твоей программе. Смотреть QThread.
2. Секундомер делается так: Берется всемя и вычитается из текущего.

PS: Так же можешь использовать класс QTimer
Записан
ElderOrb
Гость
« Ответ #4 : Май 19, 2005, 17:00 »

Имхо трэд не нужен, достаточно таймера (всё равно быстрее 24-х раз в секунду обновлять messagebox незачем - человек не заметит). К тому же трэд напрямую обновлять messagebox и не сможет, он всего лишь будет постить ивенты, а это лишний геморрой.. Куда проще создать слот, который будет апдэйтить messagebox значением времени с момента запуска таймера (метод QTime::elapsed()), подключить этот слот к таймеру, затем запустить таймер и одновременно запустить счётчик времени QTime::start())
Записан
Jkc
Гость
« Ответ #5 : Май 19, 2005, 17:47 »

Както ну совсем не понятно
Цитировать

 Куда проще создать слот, который будет апдэйтить messagebox значением времени с момента запуска таймера (метод QTime::elapsed()), подключить этот слот к таймеру, затем запустить таймер и одновременно запустить счётчик времени QTime::start())
Записан
ElderOrb
Гость
« Ответ #6 : Май 19, 2005, 23:07 »

Подмигивающий)) Я имел в виду что-то вроде этого..

...
private:
   QTime time;
   QTimer timer;
   QMessageBox* messageBox;

public slots:
   void updateMessageBox();
....

test()
{
   messageBox = new QMessageBox();
   connect(&timer, SIGNAL(timeout()), this, SLOT(updateMessageBox()));
   
   timer.start(50);
   time.start();
}

void test::updateMessageBox()
{
   messageBox->setText(QString::number(time.elapsed()));
}

p.s. время будет выводиться в милисекундах, но это всего лишь идея..
Записан
Jkc
Гость
« Ответ #7 : Май 20, 2005, 15:49 »

спасибо за помощь
кое как заработало, но есть желание что бы таймер отображался
в стиле QLCDNumber не знаешь как его  запихнуть в QMessageBox?
Записан
Keiko
Гость
« Ответ #8 : Май 20, 2005, 18:36 »

Мне непонятно, а почему собственно QMessageBox ? Наследуешься от QDialog. Коннектишь кнопку OK к accept() , Cancel - к reject(). Далее в дизайнере рисушь всё что душе угодно Улыбающийся

Создаёшь таймер (QTimer), коннектишь сигнал timeout() к соотв. слоту, остальное - дело техники Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 22.