Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Jkc от Май 19, 2005, 14:07



Название: QMassageBox + QTimer как вывести отсчёт времени?
Отправлено: Jkc от Май 19, 2005, 14:07
Привет, есть такая задача.
Нужно в QMassageBox вывести время отсчёта с момента запуска QMassageBox.
Начиная с нуля т.е. 00:00:00 -> и вперёд
формат ЧЧ:ММ:СС


Название: QMassageBox + QTimer как вывести отсчёт времени?
Отправлено: Admin от Май 19, 2005, 15:33
Наследуешся от QMessageBox
Вставляешь тред как член класса
Тред будет время выводить

Вызываешь свой клас из базы и вперед!


Название: QMassageBox + QTimer как вывести отсчёт времени?
Отправлено: Jkc от Май 19, 2005, 15:49
1. Что такой тред?
2. Мне нужно не текущее время выводить а отсчёт времени.
Что то типа секундомера.


Название: QMassageBox + QTimer как вывести отсчёт времени?
Отправлено: Admin от Май 19, 2005, 16:12
Цитата: "Jkc"
1. Что такой тред?
2. Мне нужно не текущее время выводить а отсчёт времени.
Что то типа секундомера.


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

PS: Так же можешь использовать класс QTimer


Название: QMassageBox + QTimer как вывести отсчёт времени?
Отправлено: ElderOrb от Май 19, 2005, 17:00
Имхо трэд не нужен, достаточно таймера (всё равно быстрее 24-х раз в секунду обновлять messagebox незачем - человек не заметит). К тому же трэд напрямую обновлять messagebox и не сможет, он всего лишь будет постить ивенты, а это лишний геморрой.. Куда проще создать слот, который будет апдэйтить messagebox значением времени с момента запуска таймера (метод QTime::elapsed()), подключить этот слот к таймеру, затем запустить таймер и одновременно запустить счётчик времени QTime::start())


Название: QMassageBox + QTimer как вывести отсчёт времени?
Отправлено: Jkc от Май 19, 2005, 17:47
Както ну совсем не понятно
Цитировать

 Куда проще создать слот, который будет апдэйтить messagebox значением времени с момента запуска таймера (метод QTime::elapsed()), подключить этот слот к таймеру, затем запустить таймер и одновременно запустить счётчик времени QTime::start())


Название: QMassageBox + QTimer как вывести отсчёт времени?
Отправлено: ElderOrb от Май 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. время будет выводиться в милисекундах, но это всего лишь идея..


Название: QMassageBox + QTimer как вывести отсчёт времени?
Отправлено: Jkc от Май 20, 2005, 15:49
спасибо за помощь
кое как заработало, но есть желание что бы таймер отображался
в стиле QLCDNumber не знаешь как его  запихнуть в QMessageBox?


Название: QMassageBox + QTimer как вывести отсчёт времени?
Отправлено: Keiko от Май 20, 2005, 18:36
Мне непонятно, а почему собственно QMessageBox ? Наследуешься от QDialog. Коннектишь кнопку OK к accept() , Cancel - к reject(). Далее в дизайнере рисушь всё что душе угодно :)

Создаёшь таймер (QTimer), коннектишь сигнал timeout() к соотв. слоту, остальное - дело техники :)