Newer
Older
PhaseMeasure / ChannelItem.cpp
#include "ChannelItem.h"
#include "ui_ChannelItem.h"

#include <QMutex>
#include <QMessageBox>

ChannelItem::ChannelItem(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::ChannelItem)
{
    ui->setupUi(this);
    QFont font("微软雅黑");
    font.setPixelSize(16);

    this->setProperty("form", "channel");
}

ChannelItem::~ChannelItem()
{
    delete ui;
}


void ChannelItem::setIndex(int value)
{
    index = value;
}

void ChannelItem::updatePhaseMeasureData(PhaseDataDto * phaseData)
{
    int size = phaseVector.at(index).size();
    double ps = phaseData->channelData.at(index) * 1e12; // 显示ps数据
//    ui->rawValue->setText(QString::number(ps, 'f', 3) + "ps"); // 原始数据显示单位为ps
    ui->samplingOne->setText(QString::number(size));
    ui->samplingTen->setText(QString::number((int)size/10));
    ui->samplingHund->setText(QString::number((int)size/100));
    ui->samplingThou->setText(QString::number((int)size/1000));
    ui->samplingTT->setText(QString::number((int)size/10000));

    ui->stabilityOne->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(0), 'e', 4) : "0.0000"); // 科学计数法显示
    ui->stabilityTen->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(1), 'e', 4) : "0.0000");
    ui->stabilityHund->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(2), 'e', 4) : "0.0000");
    ui->stabilityThou->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(3), 'e', 4) : "0.0000");
    ui->stabilityTT->setText(channelAllan.at(index).isEmpty() == false ? QString::number(channelAllan.at(index).at(4), 'e', 4) : "0.0000");
}


void ChannelItem::on_clearDataButt_clicked()
{
    QMessageBox confirmBox(QMessageBox::Question, "确认", "是否清除数据以重新计算稳定度?", NULL);
    confirmBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
    confirmBox.button(QMessageBox::Yes)->setText("是");
    confirmBox.button(QMessageBox::Yes)->setMinimumWidth(50);
    confirmBox.button(QMessageBox::No)->setText("否");

    if (confirmBox.exec() == QMessageBox::Yes) {
        // 清除测量数据
        QVector<QStringList> pNullVector;
        QVector<double> pNullAllen(5, 0.0);

        QMutex mutex;
        mutex.lock();
        phaseVector[index].clear();
        channelAllenSigma[index].swap(pNullAllen);
        mutex.unlock();
    }
}

void ChannelItem::on_chartViewButt_clicked()
{
    ChannelCharts * chartFrame = new ChannelCharts();
    chartFrame->setWindowModality(Qt::ApplicationModal);
    chartFrame->initAllenChart(index);
    chartFrame->initDataChart(index);
    chartFrame->setTitleText((QString("通道 - %1 数据曲线").arg(index + 1)));
    chartFrame->show();
}