NavidMicro
3rd May 2018, 04:45
hi , i'm new to qt
i have low speed in this app
please help
void MainWindow::LoadGages(void)
{
QImage sb_img(":/new/prefix1/spb");
QImage tb_img(":/new/prefix1/tkb");
QImage nd_img(":/new/prefix1/nd");
QImage cn_img(":/new/prefix1/cen");
QImage ov_img(":/new/prefix1/ov");
sb = sb.fromImage(sb_img.scaled(450,450,Qt::IgnoreAspec tRatio,Qt::SmoothTransformation));
tb = tb.fromImage(tb_img.scaled(450,450,Qt::IgnoreAspec tRatio,Qt::SmoothTransformation));
nd = nd.fromImage(nd_img.scaled(146,115,Qt::IgnoreAspec tRatio,Qt::SmoothTransformation));
cn = cn.fromImage(cn_img.scaled(41,41,Qt::IgnoreAspectR atio,Qt::SmoothTransformation));
ov = ov.fromImage(ov_img.scaled(400,325,Qt::IgnoreAspec tRatio,Qt::SmoothTransformation));
speed=103;
takho=103;
qreal alpha=0.0;
for(qreal roty=270;roty<=360;roty+=5)
{
QPixmap Left=drawGauge(sb,speed,450,0,0,roty,225,225,alpha );
QPixmap Right=drawGauge(tb,speed,450,0,0,-roty,225,225,alpha);
alpha+=0.15;
ui->label->setPixmap(drawBoth(Left,Right));
QApplication::processEvents();
}
for(qreal val=103;val<=370;val+=5)
{
QPixmap Left=drawGauge(sb,val,450,0,0,0,0,0,1.0);
QPixmap Right=drawGauge(tb,val,450,0,0,0,0,0,1.0);
ui->label->setPixmap(drawBoth(Left,Right));
QApplication::processEvents();
}
for(qreal val=370;val>=103;val-=5)
{
QPixmap Left=drawGauge(sb,val,450,0,0,0,0,0,1.0);
QPixmap Right=drawGauge(tb,val,450,0,0,0,0,0,1.0);
ui->label->setPixmap(drawBoth(Left,Right));
QApplication::processEvents();
}
QPixmap Left=drawGauge(sb,103,450,0,0,0,0,0,1.0);
QPixmap Right=drawGauge(tb,103,450,0,0,0,0,0,1.0);
ui->label->setPixmap(drawBoth(Left,Right));
//timerId=startTimer(1);
update();
}
QPixmap MainWindow::drawBoth(QPixmap g1,QPixmap g2)
{
QPainter p;
QPixmap win(ui->label->size());
win.fill(Qt::transparent);
QRect winR(ui->label->x(),ui->label->y(),ui->label->width(),ui->label->height());
p.begin(&win);
p.setRenderHint(QPainter::Antialiasing);
p.setRenderHint(QPainter::SmoothPixmapTransform);
p.setRenderHint(QPainter::HighQualityAntialiasing) ;
p.drawPixmap(10,25,g1);
p.drawPixmap(winR.x()+winR.width()-450-75,25,g2);
p.end();
return win;
}
QPixmap MainWindow::drawGauge(QPixmap Gauge,qreal value,int scale,qreal z,qreal x,qreal y,qreal tx,qreal ty,qreal alpha)
{
QPainter p;
QPixmap win(Gauge.size());
win.fill(Qt::transparent);
p.begin(&win);
p.setRenderHint(QPainter::Antialiasing);
p.setRenderHint(QPainter::SmoothPixmapTransform);
p.setRenderHint(QPainter::HighQualityAntialiasing) ;
p.drawPixmap(0,0,Gauge);
p.setTransform(GetRotation(value,Qt::ZAxis,(450/2)+5,(450/2)+5));
p.setViewport(p.viewport().x()-5,p.viewport().y()-5,p.viewport().width(),p.viewport().height());
p.drawPixmap(450/2,450/2,nd);
p.resetMatrix();
p.drawPixmap((450/2)-20,(450/2)-20,cn);
p.setOpacity(0.2);
p.drawPixmap(25,25,ov);
p.end();
QPixmap gauge=win;
win.fill(Qt::transparent);
p.begin(&win);
p.setRenderHint(QPainter::Antialiasing);
p.setRenderHint(QPainter::SmoothPixmapTransform);
p.setRenderHint(QPainter::HighQualityAntialiasing) ;
p.setTransform(GetRotation(z,Qt::ZAxis,tx,ty));
p.drawPixmap(0,0,gauge);
p.end();
gauge=win;
win.fill(Qt::transparent);
p.begin(&win);
p.setRenderHint(QPainter::Antialiasing);
p.setRenderHint(QPainter::SmoothPixmapTransform);
p.setRenderHint(QPainter::HighQualityAntialiasing) ;
p.setTransform(GetRotation(x,Qt::XAxis,tx,ty));
p.drawPixmap(0,0,gauge);
p.end();
gauge=win;
win.fill(Qt::transparent);
p.begin(&win);
p.setRenderHint(QPainter::Antialiasing);
p.setRenderHint(QPainter::SmoothPixmapTransform);
p.setRenderHint(QPainter::HighQualityAntialiasing) ;
p.setTransform(GetRotation(y,Qt::YAxis,tx,ty));
p.setOpacity(alpha);
p.drawPixmap(0,0,gauge);
p.end();
gauge=win;
win.fill(Qt::transparent);
p.begin(&win);
p.setRenderHint(QPainter::Antialiasing);
p.setRenderHint(QPainter::SmoothPixmapTransform);
p.setRenderHint(QPainter::HighQualityAntialiasing) ;
p.setOpacity(alpha);
p.drawPixmap(0,0,gauge);
p.end();
QImage _retval = win.toImage();
QPixmap retval = retval.fromImage(_retval.scaled(scale,scale,Qt::Ig noreAspectRatio,Qt::SmoothTransformation));
return retval;
}
QTransform MainWindow::GetRotation(qreal rotation,Qt::Axis axis,qreal dx,qreal dy)
{
QTransform qtr;
qtr.translate(dx,dy);
qtr.rotate(rotation,axis);
qtr.translate(-dx,-dy);
return qtr;
}
i have low speed in this app
please help
void MainWindow::LoadGages(void)
{
QImage sb_img(":/new/prefix1/spb");
QImage tb_img(":/new/prefix1/tkb");
QImage nd_img(":/new/prefix1/nd");
QImage cn_img(":/new/prefix1/cen");
QImage ov_img(":/new/prefix1/ov");
sb = sb.fromImage(sb_img.scaled(450,450,Qt::IgnoreAspec tRatio,Qt::SmoothTransformation));
tb = tb.fromImage(tb_img.scaled(450,450,Qt::IgnoreAspec tRatio,Qt::SmoothTransformation));
nd = nd.fromImage(nd_img.scaled(146,115,Qt::IgnoreAspec tRatio,Qt::SmoothTransformation));
cn = cn.fromImage(cn_img.scaled(41,41,Qt::IgnoreAspectR atio,Qt::SmoothTransformation));
ov = ov.fromImage(ov_img.scaled(400,325,Qt::IgnoreAspec tRatio,Qt::SmoothTransformation));
speed=103;
takho=103;
qreal alpha=0.0;
for(qreal roty=270;roty<=360;roty+=5)
{
QPixmap Left=drawGauge(sb,speed,450,0,0,roty,225,225,alpha );
QPixmap Right=drawGauge(tb,speed,450,0,0,-roty,225,225,alpha);
alpha+=0.15;
ui->label->setPixmap(drawBoth(Left,Right));
QApplication::processEvents();
}
for(qreal val=103;val<=370;val+=5)
{
QPixmap Left=drawGauge(sb,val,450,0,0,0,0,0,1.0);
QPixmap Right=drawGauge(tb,val,450,0,0,0,0,0,1.0);
ui->label->setPixmap(drawBoth(Left,Right));
QApplication::processEvents();
}
for(qreal val=370;val>=103;val-=5)
{
QPixmap Left=drawGauge(sb,val,450,0,0,0,0,0,1.0);
QPixmap Right=drawGauge(tb,val,450,0,0,0,0,0,1.0);
ui->label->setPixmap(drawBoth(Left,Right));
QApplication::processEvents();
}
QPixmap Left=drawGauge(sb,103,450,0,0,0,0,0,1.0);
QPixmap Right=drawGauge(tb,103,450,0,0,0,0,0,1.0);
ui->label->setPixmap(drawBoth(Left,Right));
//timerId=startTimer(1);
update();
}
QPixmap MainWindow::drawBoth(QPixmap g1,QPixmap g2)
{
QPainter p;
QPixmap win(ui->label->size());
win.fill(Qt::transparent);
QRect winR(ui->label->x(),ui->label->y(),ui->label->width(),ui->label->height());
p.begin(&win);
p.setRenderHint(QPainter::Antialiasing);
p.setRenderHint(QPainter::SmoothPixmapTransform);
p.setRenderHint(QPainter::HighQualityAntialiasing) ;
p.drawPixmap(10,25,g1);
p.drawPixmap(winR.x()+winR.width()-450-75,25,g2);
p.end();
return win;
}
QPixmap MainWindow::drawGauge(QPixmap Gauge,qreal value,int scale,qreal z,qreal x,qreal y,qreal tx,qreal ty,qreal alpha)
{
QPainter p;
QPixmap win(Gauge.size());
win.fill(Qt::transparent);
p.begin(&win);
p.setRenderHint(QPainter::Antialiasing);
p.setRenderHint(QPainter::SmoothPixmapTransform);
p.setRenderHint(QPainter::HighQualityAntialiasing) ;
p.drawPixmap(0,0,Gauge);
p.setTransform(GetRotation(value,Qt::ZAxis,(450/2)+5,(450/2)+5));
p.setViewport(p.viewport().x()-5,p.viewport().y()-5,p.viewport().width(),p.viewport().height());
p.drawPixmap(450/2,450/2,nd);
p.resetMatrix();
p.drawPixmap((450/2)-20,(450/2)-20,cn);
p.setOpacity(0.2);
p.drawPixmap(25,25,ov);
p.end();
QPixmap gauge=win;
win.fill(Qt::transparent);
p.begin(&win);
p.setRenderHint(QPainter::Antialiasing);
p.setRenderHint(QPainter::SmoothPixmapTransform);
p.setRenderHint(QPainter::HighQualityAntialiasing) ;
p.setTransform(GetRotation(z,Qt::ZAxis,tx,ty));
p.drawPixmap(0,0,gauge);
p.end();
gauge=win;
win.fill(Qt::transparent);
p.begin(&win);
p.setRenderHint(QPainter::Antialiasing);
p.setRenderHint(QPainter::SmoothPixmapTransform);
p.setRenderHint(QPainter::HighQualityAntialiasing) ;
p.setTransform(GetRotation(x,Qt::XAxis,tx,ty));
p.drawPixmap(0,0,gauge);
p.end();
gauge=win;
win.fill(Qt::transparent);
p.begin(&win);
p.setRenderHint(QPainter::Antialiasing);
p.setRenderHint(QPainter::SmoothPixmapTransform);
p.setRenderHint(QPainter::HighQualityAntialiasing) ;
p.setTransform(GetRotation(y,Qt::YAxis,tx,ty));
p.setOpacity(alpha);
p.drawPixmap(0,0,gauge);
p.end();
gauge=win;
win.fill(Qt::transparent);
p.begin(&win);
p.setRenderHint(QPainter::Antialiasing);
p.setRenderHint(QPainter::SmoothPixmapTransform);
p.setRenderHint(QPainter::HighQualityAntialiasing) ;
p.setOpacity(alpha);
p.drawPixmap(0,0,gauge);
p.end();
QImage _retval = win.toImage();
QPixmap retval = retval.fromImage(_retval.scaled(scale,scale,Qt::Ig noreAspectRatio,Qt::SmoothTransformation));
return retval;
}
QTransform MainWindow::GetRotation(qreal rotation,Qt::Axis axis,qreal dx,qreal dy)
{
QTransform qtr;
qtr.translate(dx,dy);
qtr.rotate(rotation,axis);
qtr.translate(-dx,-dy);
return qtr;
}