1.绘制界面
绘制如下界面
接收到数据后
同9 将重复的地方封装成一个类
class ToothPosLabelMsgWgt :public HiBaseWgt
{
public:
ToothPosLabelMsgWgt(TriTreeViewer*f,QString labelText, QString labelTip, QString labelContent, QWidget*parent);
~ToothPosLabelMsgWgt();
public:
void setLabelData(QString labelData);
private:
QHBoxLayout *m_mainLayout;
QLabel *m_lText;
QLabel *m_lEdit;
};
ToothPosLabelMsgWgt::ToothPosLabelMsgWgt(TriTreeViewer *f,QString labelText, QString labelTip, QString labelData, QWidget *parent)
:HiBaseWgt(f, "ToothPosLabelMsgWgt", parent)
{
this->setStyleSheet("border:0px;margin:0px");
m_mainLayout = new QHBoxLayout(this);
m_mainLayout->setSpacing(0);
m_mainLayout->setMargin(0);
m_lText = new QLabel(labelText, parent);
m_lText->setToolTip(labelTip);
m_lEdit = new QLabel(labelData, parent);
m_lEdit->setStyleSheet("color:red");
m_mainLayout->setMargin(0);
m_mainLayout->setSpacing(5);
m_mainLayout->addWidget(m_lText, 1);
m_mainLayout->addWidget(m_lEdit, 1);
}
void ToothPosLabelMsgWgt::setLabelData(QString labelData)
{
m_lEdit->setText(labelData);
}
ToothPosLabelMsgWgt::~ToothPosLabelMsgWgt(){
}
绘制时调用
//平移
#define m_translation QString::fromLocal8Bit("平移")
#define m_translation_rise QString::fromLocal8Bit("升高")
#define m_translation_lower QString::fromLocal8Bit("压低")
ToothPosLabelMsgWgt *translation_rise;
ToothPosLabelMsgWgt *translation_lower;
ToothPosLabelMsgWgt *translation_buccal;
translation_rise = new ToothPosLabelMsgWgt(m_f,m_translation_rise, m_translation_rise, "" , this);
translation_lower = new ToothPosLabelMsgWgt(m_f, m_translation_lower, m_translation_lower, "" , this);
translation_buccal = new ToothPosLabelMsgWgt(m_f, m_translation_buccal, m_translation_buccal, "", this);
3.写入更新数据方法
void ToothPosUI::updateData()
{
FDIInfo->setLabelData(QString::number(FDI_stu.m_num));
translation_rise->setLabelData(QString::number(translation_stu.m_rise));
translation_lower->setLabelData(QString::number(translation_stu.m_lower));
translation_buccal->setLabelData(QString::number(translation_stu.m_buccal));
translation_lingual->setLabelData(QString::number(translation_stu.m_lingual));
translation_farCentral->setLabelData(QString::number(translation_stu.m_farCentral));
translation_nearCentral>setLabelData(QString::number(translation_stu.m_nearCentral));
......
2.接收数据
接收到主窗口传过来的牙位窗口信息,并调用牙位窗口的updateData()方法
ToothPosUI *toothPosUI = NULL;
void *p = NULL;
SceneTree *nd = para->findByPathName("dialog");
if (nd){
nd->getVal(p);
toothPosUI = (ToothPosUI *)p;
}
else
{
return 0;
}
SceneTree *FDI = para->findByPathName("FDI");//牙位号
SceneTree *Trans = para->findByPathName("Trans");
SceneTree *Rotate = para->findByPathName("Rotate");
SceneTree *Corner = para->findByPathName("Corner");
SceneTree *Measure = para->findByPathName("Measure");
if (FDI){
FDI->getVal(toothPosUI->FDI_stu.m_num);
}
if (Trans){
double X;
double Y;
double Z;
Trans->findByPathName("X")->getVal(X);//X 近中>0 远中<0
Trans->findByPathName("Y")->getVal(Y);//Y 唇侧>0 舌侧<0
Trans->findByPathName("Z")->getVal(Z);//Z 颊侧>0 压低<0
//X 近中>0 远中<0
X = Accurate2decimalPlaces(X);
Y = Accurate2decimalPlaces(Y);
Z = Accurate2decimalPlaces(Z);
if (X > 0){
toothPosUI->translation_stu.m_nearCentral = NULL;
toothPosUI->translation_stu.m_farCentral = abs(X);
}else{
toothPosUI->translation_stu.m_nearCentral = abs(X);
toothPosUI->translation_stu.m_farCentral = NULL;
}
if (Y > 0){
toothPosUI->translation_stu.m_lingual = abs(Y);
toothPosUI->translation_stu.m_buccal = NULL;
}else
{
toothPosUI->translation_stu.m_lingual = NULL;
toothPosUI->translation_stu.m_buccal = abs(Y);
}
if (Z > 0){
toothPosUI->translation_stu.m_rise = NULL;
toothPosUI->translation_stu.m_lower = abs(Z);
}else{
toothPosUI->translation_stu.m_rise = abs(Z);
toothPosUI->translation_stu.m_lower = NULL;
}
}
......
toothPosUI->updateData();
return 0;
double Accurate2decimalPlaces(double x)
{
double s;
if (abs(x)>=10)
{
s = ((int)(x * 10.0)) / 10.0;
}
else
{
s = ((int)(x * 100.00)) / 100.00;
}
return s;
}