Qt软件开发文档11---更新数据

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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值