16,816
社区成员




class CurveBase : public QWidget
{
Q_OBJECT
public:
explicit CurveBase(QWidget *parent = 0);
~CurveBase();
void SetRange( qint16 min , qint16 max , bool dot = false ); //设置值的范围
public slots:
signals:
private:
QVector< QPointer<QLabel> > m_lables;
QVector< QPointer<QSlider> > m_sliders;
qint16 m_value_min; //最小值
qint16 m_value_max; //最大值
};
class NormalCurve : public QDialog
{
Q_OBJECT
public:
explicit NormalCurve(QString title , QString unit ,
qint16 min , qint16 max , bool dot ,
const QVector<qint16> & srcData , QDialog *parent = 0);
~NormalCurve();
static QVector<qint16> SetCurve( QString title , QString unit ,
qint16 min , qint16 max , bool dot ,
const QVector<qint16> & srcData , QDialog *parent = 0);
signals:
void UpdateCurveDatas( const QVector<qint16> & datas );
void UpdateCurveData( quint8 index , qint16 value );
public slots:
private:
void BuildWidget(void);
qint16 m_min, m_max;
bool m_dot;
quint8 m_focus_on;
QVector<qint16> m_data;
//Widget
QPointer<CurveBase> m_curve;
};
int main(int argc, char *argv[])
{
QApplication a(argc,argv);
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));//设置中文字体编码
QVector<qint16> vect(10,137);
NormalCurve dlg (QObject::tr(""), QObject::tr(""), 125, 160, true, vect );
dlg.show();
return a.exec();
}
NormalCurve::NormalCurve(QString title , QString unit ,
qint16 min , qint16 max , bool dot ,
const QVector<qint16> & srcData , QDialog *parent) :
QDialog(parent)
{
m_data.resize(10);
for ( int i = 0 ; i < 10 ; i ++ ){
if (srcData[i] >= min && srcData[i] <= max){
m_data[i] = srcData[i];
}
}
BuildWidget();
m_curve->SetRange(min,max,dot); //问题就在这句上!!!!!!!!!
}
void CurveBase::SetRange( qint16 min , qint16 max , bool isDot ) //设置值的范围
{
m_value_min = min;
m_value_max = max;
for (int i = 0 ; i < 10 ; i ++){
m_sliders[i]->setRange(min, max); //这句话的调用出现了非常不可思议的数据篡改操作!!!!
}
……
}