ClockWindow::ClockWindow()
{
...
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(repaint()));
timer->start(1000);
}
void ClockWindow::paintEvent(QPaintEvent *event)
{
setPalette(QPalette(clockSettings.bgColor));
QDateTime currentDatetime = QDateTime::currentDateTime();
QPainter painter(this);
painter.setFont(clockSettings.font);
QFontMetrics fontMetrics(clockSettings.font);
QString textToDisplay = currentDatetime.toString(clockSettings.currentDatetimeFormat);
QRect endRect = painter.boundingRect(x(), y(), width(), height(), 0, " "+textToDisplay+" ");
if (endRect != startRect) {
setGeometry(endRect);
}
if (clockSettings.border) {
painter.setPen(clockSettings.borderColor);
painter.drawRect(0, 0, width() - 1, height() - 1);
}
painter.setPen(clockSettings.fontColor);
painter.drawText((width() - fontMetrics.width(textToDisplay)) / 2, fontMetrics.ascent(), textToDisplay);
}
Некоторые вещи нужно переделать правда, а то ширина сиволов в некоторых шрифтах не совпадает и видно, как окошко меняет размер при разных цифрах, что не есть гут. Но пока не знаю, как сие организовать мудро.