|
QT 4: программирование GUI на С++Таймер всегда имеет ненулевой идентификатор, поэтому мы используем 0, показывая, что таймер еще не запущен. 09 void Ticker::setText(const QString &newText) 10 { 11 myText = newText; 12 update(); 13 updateGeometry(); 14 } Функция setText() ycтaнaвливaeт oтoбpaжaeмый тeкcт. Oнa вызывaeт update() для выдачи запроса на перерисовку и updateGeometry() для уведомления всех менеджеров компоновки, содержащих виджет Ticker, об изменении идеального размера. 15 QSizeTicker::sizeHint() const 16 { 17 return fontMetrics().size(0, text()); 18 } Функция sizeHint() возвращает в качестве идеального размера виджета размеры области, занимаемой текстом. Функция QWidget::fontMetrics() возвращает объект QFontMetrics, который можно использовать для получения информации относительно шрифта виджета. В данном случае мы определяем размер заданного текста. (В первом аргументе функции QFontMetrics::size() задается флажок, который не нужен для простых строк, поэтому мы просто передаем 0.) 19 void Ticker::paintEvent(QPaintEvent * /* event */) 20 { 21 QPainter painter(this); 22 int textWidth = fontMetrics().width(text()); 23 if (textWidth < 1) 24 return; 25 int х= -offset; 26 while (x < width()) { 27 painter.drawText(x, 0, textWidth, height(), 28 Qt::AlignLeft | Qt::AlignVCenter, text()); 29 x += textWidth; 30 } 31 } Функция paintEvent() отображает текст при помощи функции QPainter::drawText() ...» |
Код для вставки книги в блог HTML
phpBB
текст
|
|