Пример "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(); }; Реализация класса DigitalClockDigitalClock::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() для обновления виджета.
|
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |