#include "geomodeldesigndialog.h"
#include <QPainter>
#include <QPen>
#include <QBrush>
#include <QColor>
#include <QVector>
#include <QLinearGradient>
GeoModelDesignDialog::GeoModelDesignDialog(QWidget *parent,GeoColorMap *clr)
: QDialog(parent)
{
ui.setupUi(this);
mClrmap = clr;
ui.mBackValueEdit->setText("1.70141E+038");
ui.mCurrentValueEdit->setText("1.70141E+038");
initColorBar();
connect(ui.mApplyBtn,SIGNAL(clicked()),this,SLOT(apply()));
}
GeoModelDesignDialog::~GeoModelDesignDialog()
{
}
void GeoModelDesignDialog::accept()
{
//new model
if(ui.mCurrentValueEdit->text().isEmpty()
||ui.mBackValueEdit->text().isEmpty())
return;
ModelDesignInfo info;
info.current = ui.mCurrentValueEdit->text().toDouble();
info.back = ui.mBackValueEdit->text().toDouble();
emit upgrade(info);
this->hide();
}
void GeoModelDesignDialog::reject()
{
this->hide();
}
void GeoModelDesignDialog::apply()
{
//new model
if(ui.mCurrentValueEdit->text().isEmpty()
||ui.mBackValueEdit->text().isEmpty())
return;
ModelDesignInfo info;
info.current = ui.mCurrentValueEdit->text().toDouble();
info.back = ui.mBackValueEdit->text().toDouble();
emit upgrade(info);
}
void GeoModelDesignDialog::initColorBar()
{
QPainter painter(ui.mColorBar);
painter.save();
drawColorBar(&painter);
drawLabel(&painter);
painter.restore();
}
void GeoModelDesignDialog::setColorMap(GeoColorMap *clr)
{
mClrmap = clr;
}
void GeoModelDesignDialog::drawColorBar(QPainter *painter)
{
if(!mClrmap)
return;
painter->setRenderHint(QPainter::Antialiasing, true);
QRect barRect = ui.mColorBar->rect().adjusted(0,0,-5,0);
QLinearGradient linearGradient(0,0,barRect.width(),barRect.height());
//color number;
QVector<ClrMap> colors = mClrmap->clrMapLevels();
double minv = mClrmap->minValue();
double maxv = mClrmap->maxValue();
for(int i=0;i<colors.size();i++)
{
linearGradient.setColorAt((colors
.value-minv)/(maxv-minv), colors.color); }
QPen pen(QBrush(linearGradient), barRect.width());
painter->setPen(pen);
pen.setCapStyle(Qt::FlatCap);
painter->setPen(pen);
painter->drawLine(barRect.width()/2, 0, barRect.width()/2, barRect.height());
pen.setWidth(0);
pen.setColor(Qt::black);
painter->setPen(pen);
painter->drawRect(barRect);
}
void GeoModelDesignDialog::drawLabel(QPainter *painter)
{
}
为什么ui.mColorBar不能
显示?