本文整理汇总了C++中QProgressBar::repaint方法的典型用法代码示例。如果您正苦于以下问题:C++ QProgressBar::repaint方法的具体用法?C++ QProgressBar::repaint怎么用?C++ QProgressBar::repaint使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QProgressBar
的用法示例。
在下文中一共展示了QProgressBar::repaint方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
void
Progress::timerEvent(QTimerEvent * event)
{
if (event->timerId() != timer.timerId() || noAnimations())
return;
//Update the registered progressbars.
Items::iterator iter;
QProgressBar *pb;
bool mkProper = false;
animationUpdate = true;
for (iter = items.begin(); iter != items.end(); iter++)
{
QWidget *w = const_cast<QWidget*>(iter.key().data());
if (!w) // not a progressbar - shouldn't be in items, btw...
{ mkProper = true; continue; }
pb = qobject_cast<QProgressBar*>(w);
if (!pb)
continue; // not a progressbar - shouldn't be in items, btw...
if (pb->maximum() != 0 || pb->minimum() != 0 || pb->paintingActive() || !pb->isVisible())
{
pb->setAttribute(Qt::WA_OpaquePaintEvent, false);
continue; // no paint necessary
}
pb->setAttribute(Qt::WA_OpaquePaintEvent);
++iter.value();
// dump pb geometry
int x,y,l,t, *step = &iter.value()._step;
if ( pb->orientation() == Qt::Vertical ) // swapped values
pb->rect().getRect(&y,&x,&t,&l);
else
pb->rect().getRect(&x,&y,&l,&t);
if (*step > l/_speed)
*step = l/36-(int)(l/_speed);
else if (*step == -1)
*step = l/36-1;
int s = qMin(qMax(l / 10, 16), qMin(t, 20));
int ss = (3*s)/4;
int n = l/s;
if ( pb->orientation() == Qt::Vertical)
{ x = pb->rect().bottom(); x -= (l - n*s)/2 + ss; /*s = -s;*/ }
else
{ x += (l - n*s)/2; /*s = qAbs(s);*/ }
x += qMax((int)(_speed*qAbs(*step)*n*s/l) - s, 0);
if ( pb->orientation() == Qt::Vertical )
pb->repaint(y,x-s,s,3*s);
else
pb->repaint(x-s,y,3*s,s);
}
animationUpdate = false;
if (mkProper)
_release(NULL);
}