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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: QTimer  (Прочитано 16017 раз)
L.Marvell
Гость
« Ответ #15 : Декабрь 16, 2005, 19:22 »

Я тут часики ваяю, дабы немного разобраться с Qt. Так вот, сделал так: в конструкторе виджета на котором отображаются часы
Код:

...
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(repaint()));
timer->start(1000);

а в paintEvent того же виджета собственно вся прорисовка. Часы таскаются по десктопу и мирно себе тикают.

З.Ы. Или может я чего неправильно понял...
Записан
QCasper
Гость
« Ответ #16 : Декабрь 17, 2005, 01:13 »

Цитата: "L.Marvell"
Я тут часики ваяю, дабы немного разобраться с Qt. Так вот, сделал так: в конструкторе виджета на котором отображаются часы
Код:

...
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(repaint()));
timer->start(1000);

а в paintEvent того же виджета собственно вся прорисовка. Часы таскаются по десктопу и мирно себе тикают.

З.Ы. Или может я чего неправильно понял...


У меня так не прокатило, можно весь исходник?
Записан
L.Marvell
Гость
« Ответ #17 : Декабрь 20, 2005, 16:07 »

Код:
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);
}

Некоторые вещи нужно переделать правда, а то ширина сиволов в некоторых шрифтах не совпадает и видно, как окошко меняет размер при разных цифрах, что не есть гут. Но пока не знаю, как сие организовать мудро.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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