跑马灯文字闪烁,及字体改变的问题。

weixin_38051760 2019-09-19 12:52:51
#include <QtGui>#include "ticker.h"Ticker::Ticker(QWidget *parent)    : QWidget(parent){    offset = 0;    myTimerId = 0;}void Ticker::setText(const QString &newText){    myText = newText;    update();    updateGeometry();}QSize Ticker::sizeHint() const{    return fontMetrics().size(0, text());}void Ticker::paintEvent(QPaintEvent * /* event */){    QPainter painter(this);   // QFont font("Courier" , 24);  //  painter.setFont(font);    int textWidth = fontMetrics().width(text());    int textHeight =fontMetrics().height();    if (textHeight < 1)        return;    int x = -offset;   // while (x < width()) {    while(x<height()){       // painter.drawText(x, 0, textWidth, height(),      //                   Qt::AlignLeft | Qt::AlignVCenter, text());        painter.drawText(0,x,width(),height(),Qt::AlignLeft|Qt::AlignVCenter,text());       // x += textWidth;        x+=textHeight;    }}void Ticker::showEvent(QShowEvent * /* event */){    myTimerId = startTimer(10);}void Ticker::timerEvent(QTimerEvent *event){    if (event->timerId() == myTimerId) {        offset++;        if(offset>=fontMetrics().height())            offset=0;      //  if (offset >= fontMetrics().width(text()))       //     offset = 0;       // scroll(-1, 0);        scroll(0,-1);    } else {        QWidget::timerEvent(event);    }}void Ticker::hideEvent(QHideEvent * /* event */){    killTimer(myTimerId);    myTimerId = 0;}参考论坛的例子修改的上下滚动效果,但是发现字会闪烁,另外我设定字体后,绘制的字上下会叠在一块,那位大哥,帮忙看一下咋回事。
...全文
217 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38063369 2019-09-19
  • 打赏
  • 举报
回复
菜鸟,qt刚接触不久,不熟.那位大哥帮忙看看,或者说一下实现的思路.

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧