Пример "Digital Clock"
Файлы:
Пример "Digital Clock" показывает, как использовать QLCDNumber для вывода на экран числа с ЖК-подобными цифрами.
Этот пример демонстрирует также как можно использовать QTimer для обновления виджета через регулярные промежутки времени.
Определение класса DigitalClock
Класс DigitalClock предоставляет виджет часов, показывающий время с часами и минутами, разделёнными мигающим двоеточием. Мы создаём подкласс QLCDNumber и реализовать закрытый слот, вызывая showTime() для обновления экрана часов:
class DigitalClock : public QLCDNumber
{
Q_OBJECT
public:
DigitalClock(QWidget *parent = 0);
private slots:
void showTime();
};
Реализация класса DigitalClock
DigitalClock::DigitalClock(QWidget *parent)
: QLCDNumber(parent)
{
setSegmentStyle(Filled);
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(showTime()));
timer->start(1000);
showTime();
setWindowTitle(tr("Digital Clock"));
resize(150, 60);
}
В конструкторе сначала изменяется внешний вид ЖК-подобных цифр. Стиль QLCDNumber::Filled выводит выпуклые сегменты, заполненные цветом фона (обычно чёрным). Также настраиваем посекундный таймер, чтобы отслеживать текущее время, и соединяем его сигнал timeout() с закрытым слотом showTime() с тем, чтобы экран обновлялся раз в секунду. Затем вызываем слот showTime(); при запуске без этого вызова будет происходить секундная задержка до отображения времени.
void DigitalClock::showTime()
{
QTime time = QTime::currentTime();
QString text = time.toString("hh:mm");
if ((time.second() % 2) == 0)
text[2] = ' ';
display(text);
}
Слот showTime() вызывается всякий раз, когда нужно обновить экран часов.
Текущее время преобразовано в строку с форматом "hh:mm". Когда QTime::second() - чётное число, двоеточие в строе заменяется на пробел. Этим достигается появление и исчезновение двоеточия через секунду.
В заключение, вызываем QLCDNumber::display() для обновления виджета.
Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) |
Торговые марки |
Qt 4.5.3 |
|