重新绑定通道名称
This commit is contained in:
parent
0da25401ac
commit
2c42a9eaa7
@ -66,6 +66,7 @@ void ConfigMgr::Save(QString & file_path) {
|
|||||||
channel_item["sampling_rate"] = ptr->base_config_[cid].sampling_rate;
|
channel_item["sampling_rate"] = ptr->base_config_[cid].sampling_rate;
|
||||||
channel_item["power"] = ptr->base_config_[cid].power;
|
channel_item["power"] = ptr->base_config_[cid].power;
|
||||||
channel_item["point_name"] = ptr->base_config_[cid].point_name;
|
channel_item["point_name"] = ptr->base_config_[cid].point_name;
|
||||||
|
channel_item["chan_id"] = ptr->base_config_[cid].chan_id;
|
||||||
QJsonArray voltage_range;
|
QJsonArray voltage_range;
|
||||||
voltage_range.append(ptr->base_config_[cid].normal_voltage_low);
|
voltage_range.append(ptr->base_config_[cid].normal_voltage_low);
|
||||||
voltage_range.append(ptr->base_config_[cid].normal_voltage_high);
|
voltage_range.append(ptr->base_config_[cid].normal_voltage_high);
|
||||||
@ -395,6 +396,7 @@ void ConfigMgr::Load(QString filename) {
|
|||||||
vib_data->base_config_[j].normal_voltage_high = voltage_range_array[1].toDouble();
|
vib_data->base_config_[j].normal_voltage_high = voltage_range_array[1].toDouble();
|
||||||
vib_data->base_config_[j].power = channel["power"].toBool();
|
vib_data->base_config_[j].power = channel["power"].toBool();
|
||||||
vib_data->base_config_[j].point_name = channel["point_name"].toString();
|
vib_data->base_config_[j].point_name = channel["point_name"].toString();
|
||||||
|
vib_data->base_config_[j].chan_id = channel["chan_id"].toString();
|
||||||
//setpoint
|
//setpoint
|
||||||
QJsonObject setpoint_data = channel["setpoint"].toObject();
|
QJsonObject setpoint_data = channel["setpoint"].toObject();
|
||||||
vib_data->alert_danger[j].direct_upper = setpoint_data["direct_upper"].toDouble();
|
vib_data->alert_danger[j].direct_upper = setpoint_data["direct_upper"].toDouble();
|
||||||
|
@ -105,6 +105,7 @@ typedef enum {
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
int id;
|
int id;
|
||||||
QString point_name;
|
QString point_name;
|
||||||
|
QString chan_id;
|
||||||
bool standby;
|
bool standby;
|
||||||
bool active;
|
bool active;
|
||||||
int rack_type; // VibRackType
|
int rack_type; // VibRackType
|
||||||
|
@ -176,8 +176,8 @@ void MainWindow::createMenu(const QString &rootTitle, QPushButton *parent) {
|
|||||||
// 创建第三层子菜单:/HAM824 单板卡、三冗余板卡
|
// 创建第三层子菜单:/HAM824 单板卡、三冗余板卡
|
||||||
QAction *proximitor_1 = proximitor_menu->addAction("/HAM824 单板卡");
|
QAction *proximitor_1 = proximitor_menu->addAction("/HAM824 单板卡");
|
||||||
proximitor_1->setData(kCardVibSingle);
|
proximitor_1->setData(kCardVibSingle);
|
||||||
QAction *proximitor_2 = proximitor_menu->addAction("/HAM824 三冗余板卡");
|
//QAction *proximitor_2 = proximitor_menu->addAction("/HAM824 三冗余板卡");
|
||||||
proximitor_2->setData(kCardVibTMRPrimary);
|
//proximitor_2->setData(kCardVibTMRPrimary);
|
||||||
QAction *rpm_1 = rpm_menu->addAction("/OPM844 单板卡");
|
QAction *rpm_1 = rpm_menu->addAction("/OPM844 单板卡");
|
||||||
rpm_1->setData(kCardSpeedSingle);
|
rpm_1->setData(kCardSpeedSingle);
|
||||||
// 创建第二层子菜单:/KPM834 键相模块
|
// 创建第二层子菜单:/KPM834 键相模块
|
||||||
@ -213,7 +213,7 @@ void MainWindow::createMenu(const QString &rootTitle, QPushButton *parent) {
|
|||||||
});
|
});
|
||||||
// 连接所有菜单项
|
// 连接所有菜单项
|
||||||
QObject::connect(proximitor_1, &QAction::triggered, this, &MainWindow::onMenuActionTriggered);
|
QObject::connect(proximitor_1, &QAction::triggered, this, &MainWindow::onMenuActionTriggered);
|
||||||
QObject::connect(proximitor_2, &QAction::triggered, this, &MainWindow::onMenuActionTriggered);
|
//QObject::connect(proximitor_2, &QAction::triggered, this, &MainWindow::onMenuActionTriggered);
|
||||||
QObject::connect(rpm_1, &QAction::triggered, this, &MainWindow::onMenuActionTriggered);
|
QObject::connect(rpm_1, &QAction::triggered, this, &MainWindow::onMenuActionTriggered);
|
||||||
QObject::connect(relays_1, &QAction::triggered, this, &MainWindow::onMenuActionTriggered);
|
QObject::connect(relays_1, &QAction::triggered, this, &MainWindow::onMenuActionTriggered);
|
||||||
QObject::connect(relays_2, &QAction::triggered, this, &MainWindow::onMenuActionTriggered);
|
QObject::connect(relays_2, &QAction::triggered, this, &MainWindow::onMenuActionTriggered);
|
||||||
@ -566,6 +566,7 @@ void MainWindow::on_pushButton_save_clicked() {
|
|||||||
return;
|
return;
|
||||||
QString file_name = filepath + "\\tsi_config_file.json";
|
QString file_name = filepath + "\\tsi_config_file.json";
|
||||||
ConfigMgr::Instance()->Save(file_name);
|
ConfigMgr::Instance()->Save(file_name);
|
||||||
|
return;
|
||||||
// 读取文件内容
|
// 读取文件内容
|
||||||
QFile file(file_name);
|
QFile file(file_name);
|
||||||
if (!file.open(QIODevice::ReadOnly)) {
|
if (!file.open(QIODevice::ReadOnly)) {
|
||||||
|
@ -117,6 +117,7 @@ void Seismic_monitor::UpdateData(std::shared_ptr<VibrationData> vib_data) {
|
|||||||
vib_data->base_config_[var].normal_voltage_low = ui->doubleSpinBox_low_1->value();
|
vib_data->base_config_[var].normal_voltage_low = ui->doubleSpinBox_low_1->value();
|
||||||
vib_data->base_config_[var].normal_voltage_high = ui->doubleSpinBox_high_1->value();
|
vib_data->base_config_[var].normal_voltage_high = ui->doubleSpinBox_high_1->value();
|
||||||
vib_data->base_config_[var].power = ui->checkBox_power_1->isChecked();
|
vib_data->base_config_[var].power = ui->checkBox_power_1->isChecked();
|
||||||
|
vib_data->base_config_[var].chan_id = QString("S%1C%2").arg(QString::number(slot_no, 10).rightJustified(2, '0')).arg(QString::number(var+1, 10).rightJustified(2, '0'));
|
||||||
} else if (var + 1 == 2) {
|
} else if (var + 1 == 2) {
|
||||||
vib_data->base_config_[var].standby = ui->checkBox_standby_1->isChecked();
|
vib_data->base_config_[var].standby = ui->checkBox_standby_1->isChecked();
|
||||||
vib_data->base_config_[var].active = ui->checkBox_enable_2->isChecked();
|
vib_data->base_config_[var].active = ui->checkBox_enable_2->isChecked();
|
||||||
@ -128,6 +129,7 @@ void Seismic_monitor::UpdateData(std::shared_ptr<VibrationData> vib_data) {
|
|||||||
vib_data->base_config_[var].normal_voltage_low = ui->doubleSpinBox_low_2->value();
|
vib_data->base_config_[var].normal_voltage_low = ui->doubleSpinBox_low_2->value();
|
||||||
vib_data->base_config_[var].normal_voltage_high = ui->doubleSpinBox_high_2->value();
|
vib_data->base_config_[var].normal_voltage_high = ui->doubleSpinBox_high_2->value();
|
||||||
vib_data->base_config_[var].power = ui->checkBox_power_2->isChecked();
|
vib_data->base_config_[var].power = ui->checkBox_power_2->isChecked();
|
||||||
|
vib_data->base_config_[var].chan_id = QString("S%1C%2").arg(QString::number(slot_no, 10).rightJustified(2, '0')).arg(QString::number(var+1, 10).rightJustified(2, '0'));
|
||||||
} else if (var + 1 == 3) {
|
} else if (var + 1 == 3) {
|
||||||
vib_data->base_config_[var].standby = ui->checkBox_standby_2->isChecked();
|
vib_data->base_config_[var].standby = ui->checkBox_standby_2->isChecked();
|
||||||
vib_data->base_config_[var].active = ui->checkBox_enable_3->isChecked();
|
vib_data->base_config_[var].active = ui->checkBox_enable_3->isChecked();
|
||||||
@ -139,6 +141,7 @@ void Seismic_monitor::UpdateData(std::shared_ptr<VibrationData> vib_data) {
|
|||||||
vib_data->base_config_[var].normal_voltage_low = ui->doubleSpinBox_low_3->value();
|
vib_data->base_config_[var].normal_voltage_low = ui->doubleSpinBox_low_3->value();
|
||||||
vib_data->base_config_[var].normal_voltage_high = ui->doubleSpinBox_high_3->value();
|
vib_data->base_config_[var].normal_voltage_high = ui->doubleSpinBox_high_3->value();
|
||||||
vib_data->base_config_[var].power = ui->checkBox_power_3->isChecked();
|
vib_data->base_config_[var].power = ui->checkBox_power_3->isChecked();
|
||||||
|
vib_data->base_config_[var].chan_id = QString("S%1C%2").arg(QString::number(slot_no, 10).rightJustified(2, '0')).arg(QString::number(var+1, 10).rightJustified(2, '0'));
|
||||||
} else if (var + 1 == 4) {
|
} else if (var + 1 == 4) {
|
||||||
vib_data->base_config_[var].standby = ui->checkBox_standby_2->isChecked();
|
vib_data->base_config_[var].standby = ui->checkBox_standby_2->isChecked();
|
||||||
vib_data->base_config_[var].active = ui->checkBox_enable_4->isChecked();
|
vib_data->base_config_[var].active = ui->checkBox_enable_4->isChecked();
|
||||||
@ -150,6 +153,7 @@ void Seismic_monitor::UpdateData(std::shared_ptr<VibrationData> vib_data) {
|
|||||||
vib_data->base_config_[var].normal_voltage_low = ui->doubleSpinBox_low_4->value();
|
vib_data->base_config_[var].normal_voltage_low = ui->doubleSpinBox_low_4->value();
|
||||||
vib_data->base_config_[var].normal_voltage_high = ui->doubleSpinBox_high_4->value();
|
vib_data->base_config_[var].normal_voltage_high = ui->doubleSpinBox_high_4->value();
|
||||||
vib_data->base_config_[var].power = ui->checkBox_power_4->isChecked();
|
vib_data->base_config_[var].power = ui->checkBox_power_4->isChecked();
|
||||||
|
vib_data->base_config_[var].chan_id = QString("S%1C%2").arg(QString::number(slot_no, 10).rightJustified(2, '0')).arg(QString::number(var+1, 10).rightJustified(2, '0'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
203
setpoint.cpp
203
setpoint.cpp
@ -56,11 +56,101 @@ void Setpoint::Init(){
|
|||||||
|
|
||||||
switch (car_type) {
|
switch (car_type) {
|
||||||
case kCardVibSingle:{
|
case kCardVibSingle:{
|
||||||
slider_direct->setRange(0,20);
|
|
||||||
slider_1x_ampl->setRange(0,20);
|
slider_1x_ampl->setRange(0,20);
|
||||||
slider_2x_ampl->setRange(0,20);
|
slider_2x_ampl->setRange(0,20);
|
||||||
|
update();
|
||||||
|
}break;
|
||||||
|
}
|
||||||
|
QObject::connect(ui->lineEdit_direct_upper, &QLineEdit::editingFinished, [&]() {
|
||||||
|
slider_direct->setUpperValue(ui->lineEdit_direct_upper->text().toFloat());
|
||||||
|
});
|
||||||
|
QObject::connect(slider_direct, &RangeSlider::rangeChanged, [&](float low,float high) {
|
||||||
|
ui->lineEdit_direct_upper->setText(QString::number(high));
|
||||||
|
});
|
||||||
|
|
||||||
|
QObject::connect(slider_1x_ampl, &RangeSlider::rangeChanged, [&](float low, float high) {
|
||||||
|
ui->lineEdit_1x_ampl_upper->setText(QString::number(high));
|
||||||
|
ui->lineEdit_1x_ampl_lower->setText(QString::number(low));
|
||||||
|
});
|
||||||
|
QObject::connect(ui->lineEdit_1x_ampl_upper, &QLineEdit::editingFinished, [&]() {
|
||||||
|
slider_1x_ampl->setUpperValue(ui->lineEdit_1x_ampl_upper->text().toFloat());
|
||||||
|
});
|
||||||
|
QObject::connect(ui->lineEdit_1x_ampl_lower, &QLineEdit::editingFinished, [&]() {
|
||||||
|
slider_1x_ampl->setLowerValue(ui->lineEdit_1x_ampl_lower->text().toFloat());
|
||||||
|
});
|
||||||
|
|
||||||
|
QObject::connect(slider_2x_ampl, &RangeSlider::rangeChanged, [&](float low, float high) {
|
||||||
|
ui->lineEdit_2x_ampl_upper->setText(QString::number(high));
|
||||||
|
ui->lineEdit_2x_ampl_lower->setText(QString::number(low));
|
||||||
|
});
|
||||||
|
QObject::connect(ui->lineEdit_2x_ampl_upper, &QLineEdit::editingFinished, [&]() {
|
||||||
|
slider_1x_ampl->setUpperValue(ui->lineEdit_2x_ampl_upper->text().toFloat());
|
||||||
|
});
|
||||||
|
QObject::connect(ui->lineEdit_2x_ampl_lower, &QLineEdit::editingFinished, [&]() {
|
||||||
|
slider_1x_ampl->setLowerValue(ui->lineEdit_2x_ampl_lower->text().toFloat());
|
||||||
|
});
|
||||||
|
|
||||||
|
QObject::connect(slider_danger, &RangeSlider::rangeChanged, [&](float low,float high) {
|
||||||
|
ui->lineEdit_danger_upper->setText(QString::number(high));
|
||||||
|
});
|
||||||
|
QObject::connect(ui->lineEdit_danger_upper, &QLineEdit::editingFinished, [&]() {
|
||||||
|
slider_danger->setUpperValue(ui->lineEdit_danger_upper->text().toFloat());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void Setpoint::on_pushButton_confirm_clicked()
|
||||||
|
{
|
||||||
|
if (vib_alert_ptr == nullptr) {
|
||||||
|
qCritical() << "[Setpoint::confirm] should not be here";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
vib_alert_ptr->alert_danger[current_index].direct_upper = ui->lineEdit_direct_upper->text().toFloat();
|
||||||
|
vib_alert_ptr->alert_danger[current_index].direct_enable = ui->checkBox_direct->checkState();
|
||||||
|
vib_alert_ptr->alert_danger[current_index].x1_ampl_upper = ui->lineEdit_1x_ampl_upper->text().toFloat();
|
||||||
|
vib_alert_ptr->alert_danger[current_index].x1_ampl_lower = ui->lineEdit_1x_ampl_lower->text().toFloat();
|
||||||
|
vib_alert_ptr->alert_danger[current_index].x1_ampl_enable = ui->checkBox_1x_ampl->checkState();
|
||||||
|
vib_alert_ptr->alert_danger[current_index].x2_ampl_upper = ui->lineEdit_2x_ampl_upper->text().toFloat();
|
||||||
|
vib_alert_ptr->alert_danger[current_index].x2_ampl_lower = ui->lineEdit_2x_ampl_lower->text().toFloat();
|
||||||
|
vib_alert_ptr->alert_danger[current_index].x2_ampl_enable = ui->checkBox_2x_ampl->checkState();
|
||||||
|
vib_alert_ptr->alert_danger[current_index].danger_param = ui->comboBox_danger->currentIndex();
|
||||||
|
vib_alert_ptr->alert_danger[current_index].danger_upper = ui->lineEdit_danger_upper->text().toFloat();
|
||||||
|
vib_alert_ptr->alert_danger[current_index].danger_enable = ui->checkBox_danger->checkState();
|
||||||
|
this->close();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Setpoint::on_pushButton_cancel_clicked()
|
||||||
|
{
|
||||||
|
this->close();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Setpoint::on_pushButton_set_default_clicked()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
void Setpoint::onComboBoxIndexChanged(int index){
|
||||||
|
|
||||||
|
vib_alert_ptr->alert_danger[current_index].direct_upper = ui->lineEdit_direct_upper->text().toFloat();
|
||||||
|
vib_alert_ptr->alert_danger[current_index].direct_enable = ui->checkBox_direct->checkState();
|
||||||
|
vib_alert_ptr->alert_danger[current_index].x1_ampl_upper = ui->lineEdit_1x_ampl_upper->text().toFloat();
|
||||||
|
vib_alert_ptr->alert_danger[current_index].x1_ampl_lower = ui->lineEdit_1x_ampl_lower->text().toFloat();
|
||||||
|
vib_alert_ptr->alert_danger[current_index].x1_ampl_enable = ui->checkBox_1x_ampl->checkState();
|
||||||
|
vib_alert_ptr->alert_danger[current_index].x2_ampl_upper = ui->lineEdit_2x_ampl_upper->text().toFloat();
|
||||||
|
vib_alert_ptr->alert_danger[current_index].x2_ampl_lower = ui->lineEdit_2x_ampl_lower->text().toFloat();
|
||||||
|
vib_alert_ptr->alert_danger[current_index].x2_ampl_enable = ui->checkBox_2x_ampl->checkState();
|
||||||
|
vib_alert_ptr->alert_danger[current_index].danger_param = ui->comboBox_danger->currentIndex();
|
||||||
|
vib_alert_ptr->alert_danger[current_index].danger_upper = ui->lineEdit_danger_upper->text().toFloat();
|
||||||
|
vib_alert_ptr->alert_danger[current_index].danger_enable = ui->checkBox_danger->checkState();
|
||||||
|
|
||||||
|
current_index = index;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
void Setpoint::update()
|
||||||
|
{
|
||||||
int chan = ui->comboBox_chan->currentIndex();
|
int chan = ui->comboBox_chan->currentIndex();
|
||||||
|
std::shared_ptr<CardBase> base_ptr = ConfigMgr::Instance()->GetSlotPtr(slot_no);
|
||||||
std::shared_ptr<VibrationData> setpoint_data = std::dynamic_pointer_cast<VibrationData>(base_ptr);
|
std::shared_ptr<VibrationData> setpoint_data = std::dynamic_pointer_cast<VibrationData>(base_ptr);
|
||||||
std::vector<std::shared_ptr<VariableBase>> variable_ = setpoint_data->variables_;
|
std::vector<std::shared_ptr<VariableBase>> variable_ = setpoint_data->variables_;
|
||||||
if(setpoint_data->base_config_[chan].channel_type == kVibRadial){
|
if(setpoint_data->base_config_[chan].channel_type == kVibRadial){
|
||||||
@ -235,115 +325,4 @@ void Setpoint::Init(){
|
|||||||
slider_danger->m_upper = setpoint_data->alert_danger[chan].danger_upper;
|
slider_danger->m_upper = setpoint_data->alert_danger[chan].danger_upper;
|
||||||
slider_danger->m_lower = 0;
|
slider_danger->m_lower = 0;
|
||||||
}
|
}
|
||||||
}break;
|
|
||||||
}
|
|
||||||
QObject::connect(ui->lineEdit_direct_upper, &QLineEdit::editingFinished, [&]() {
|
|
||||||
slider_direct->setUpperValue(ui->lineEdit_direct_upper->text().toFloat());
|
|
||||||
});
|
|
||||||
QObject::connect(slider_direct, &RangeSlider::rangeChanged, [&](float low,float high) {
|
|
||||||
ui->lineEdit_direct_upper->setText(QString::number(high));
|
|
||||||
});
|
|
||||||
|
|
||||||
QObject::connect(slider_1x_ampl, &RangeSlider::rangeChanged, [&](float low, float high) {
|
|
||||||
ui->lineEdit_1x_ampl_upper->setText(QString::number(high));
|
|
||||||
ui->lineEdit_1x_ampl_lower->setText(QString::number(low));
|
|
||||||
});
|
|
||||||
QObject::connect(ui->lineEdit_1x_ampl_upper, &QLineEdit::editingFinished, [&]() {
|
|
||||||
slider_1x_ampl->setUpperValue(ui->lineEdit_1x_ampl_upper->text().toFloat());
|
|
||||||
});
|
|
||||||
QObject::connect(ui->lineEdit_1x_ampl_lower, &QLineEdit::editingFinished, [&]() {
|
|
||||||
slider_1x_ampl->setLowerValue(ui->lineEdit_1x_ampl_lower->text().toFloat());
|
|
||||||
});
|
|
||||||
|
|
||||||
QObject::connect(slider_2x_ampl, &RangeSlider::rangeChanged, [&](float low, float high) {
|
|
||||||
ui->lineEdit_2x_ampl_upper->setText(QString::number(high));
|
|
||||||
ui->lineEdit_2x_ampl_lower->setText(QString::number(low));
|
|
||||||
});
|
|
||||||
QObject::connect(ui->lineEdit_2x_ampl_upper, &QLineEdit::editingFinished, [&]() {
|
|
||||||
slider_1x_ampl->setUpperValue(ui->lineEdit_2x_ampl_upper->text().toFloat());
|
|
||||||
});
|
|
||||||
QObject::connect(ui->lineEdit_2x_ampl_lower, &QLineEdit::editingFinished, [&]() {
|
|
||||||
slider_1x_ampl->setLowerValue(ui->lineEdit_2x_ampl_lower->text().toFloat());
|
|
||||||
});
|
|
||||||
|
|
||||||
QObject::connect(slider_danger, &RangeSlider::rangeChanged, [&](float low,float high) {
|
|
||||||
ui->lineEdit_danger_upper->setText(QString::number(high));
|
|
||||||
});
|
|
||||||
QObject::connect(ui->lineEdit_danger_upper, &QLineEdit::editingFinished, [&]() {
|
|
||||||
slider_danger->setUpperValue(ui->lineEdit_danger_upper->text().toFloat());
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Setpoint::on_pushButton_confirm_clicked()
|
|
||||||
{
|
|
||||||
if (vib_alert_ptr == nullptr) {
|
|
||||||
qCritical() << "[Setpoint::confirm] should not be here";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
vib_alert_ptr->alert_danger[current_index].direct_upper = ui->lineEdit_direct_upper->text().toFloat();
|
|
||||||
vib_alert_ptr->alert_danger[current_index].direct_enable = ui->checkBox_direct->checkState();
|
|
||||||
vib_alert_ptr->alert_danger[current_index].x1_ampl_upper = ui->lineEdit_1x_ampl_upper->text().toFloat();
|
|
||||||
vib_alert_ptr->alert_danger[current_index].x1_ampl_lower = ui->lineEdit_1x_ampl_lower->text().toFloat();
|
|
||||||
vib_alert_ptr->alert_danger[current_index].x1_ampl_enable = ui->checkBox_1x_ampl->checkState();
|
|
||||||
vib_alert_ptr->alert_danger[current_index].x2_ampl_upper = ui->lineEdit_2x_ampl_upper->text().toFloat();
|
|
||||||
vib_alert_ptr->alert_danger[current_index].x2_ampl_lower = ui->lineEdit_2x_ampl_lower->text().toFloat();
|
|
||||||
vib_alert_ptr->alert_danger[current_index].x2_ampl_enable = ui->checkBox_2x_ampl->checkState();
|
|
||||||
vib_alert_ptr->alert_danger[current_index].danger_param = ui->comboBox_danger->currentIndex();
|
|
||||||
vib_alert_ptr->alert_danger[current_index].danger_upper = ui->lineEdit_danger_upper->text().toFloat();
|
|
||||||
vib_alert_ptr->alert_danger[current_index].danger_enable = ui->checkBox_danger->checkState();
|
|
||||||
this->close();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Setpoint::on_pushButton_cancel_clicked()
|
|
||||||
{
|
|
||||||
this->close();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Setpoint::on_pushButton_set_default_clicked()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
void Setpoint::onComboBoxIndexChanged(int index){
|
|
||||||
|
|
||||||
vib_alert_ptr->alert_danger[current_index].direct_upper = ui->lineEdit_direct_upper->text().toFloat();
|
|
||||||
vib_alert_ptr->alert_danger[current_index].direct_enable = ui->checkBox_direct->checkState();
|
|
||||||
vib_alert_ptr->alert_danger[current_index].x1_ampl_upper = ui->lineEdit_1x_ampl_upper->text().toFloat();
|
|
||||||
vib_alert_ptr->alert_danger[current_index].x1_ampl_lower = ui->lineEdit_1x_ampl_lower->text().toFloat();
|
|
||||||
vib_alert_ptr->alert_danger[current_index].x1_ampl_enable = ui->checkBox_1x_ampl->checkState();
|
|
||||||
vib_alert_ptr->alert_danger[current_index].x2_ampl_upper = ui->lineEdit_2x_ampl_upper->text().toFloat();
|
|
||||||
vib_alert_ptr->alert_danger[current_index].x2_ampl_lower = ui->lineEdit_2x_ampl_lower->text().toFloat();
|
|
||||||
vib_alert_ptr->alert_danger[current_index].x2_ampl_enable = ui->checkBox_2x_ampl->checkState();
|
|
||||||
vib_alert_ptr->alert_danger[current_index].danger_param = ui->comboBox_danger->currentIndex();
|
|
||||||
vib_alert_ptr->alert_danger[current_index].danger_upper = ui->lineEdit_danger_upper->text().toFloat();
|
|
||||||
vib_alert_ptr->alert_danger[current_index].danger_enable = ui->checkBox_danger->checkState();
|
|
||||||
|
|
||||||
current_index = index;
|
|
||||||
|
|
||||||
ui->lineEdit_direct_upper->setText(QString::number(vib_alert_ptr->alert_danger[index].direct_upper));
|
|
||||||
ui->checkBox_direct->setChecked(vib_alert_ptr->alert_danger[index].direct_enable);
|
|
||||||
if(vib_alert_ptr->alert_danger[index].direct_upper > 0)
|
|
||||||
slider_direct->m_upper = vib_alert_ptr->alert_danger[index].direct_upper;
|
|
||||||
ui->lineEdit_1x_ampl_upper->setText(QString::number(vib_alert_ptr->alert_danger[index].x1_ampl_upper));
|
|
||||||
ui->lineEdit_1x_ampl_lower->setText(QString::number(vib_alert_ptr->alert_danger[index].x1_ampl_lower));
|
|
||||||
ui->checkBox_1x_ampl->setChecked(vib_alert_ptr->alert_danger[index].x1_ampl_enable);
|
|
||||||
if(vib_alert_ptr->alert_danger[index].x1_ampl_upper > 0 && vib_alert_ptr->alert_danger[index].x1_ampl_lower > 0){
|
|
||||||
slider_1x_ampl->m_upper = vib_alert_ptr->alert_danger[index].x1_ampl_upper;
|
|
||||||
slider_1x_ampl->m_lower = vib_alert_ptr->alert_danger[index].x1_ampl_lower;
|
|
||||||
}
|
|
||||||
ui->lineEdit_2x_ampl_upper->setText(QString::number(vib_alert_ptr->alert_danger[index].x2_ampl_upper));
|
|
||||||
ui->lineEdit_2x_ampl_lower->setText(QString::number(vib_alert_ptr->alert_danger[index].x2_ampl_lower));
|
|
||||||
ui->checkBox_2x_ampl->setChecked(vib_alert_ptr->alert_danger[index].x2_ampl_enable);
|
|
||||||
if(vib_alert_ptr->alert_danger[index].x2_ampl_upper > 0 && vib_alert_ptr->alert_danger[index].x2_ampl_lower > 0){
|
|
||||||
slider_2x_ampl->m_upper = vib_alert_ptr->alert_danger[index].x2_ampl_upper;
|
|
||||||
slider_2x_ampl->m_lower = vib_alert_ptr->alert_danger[index].x2_ampl_lower;
|
|
||||||
}
|
|
||||||
ui->lineEdit_danger_upper->setText(QString::number(vib_alert_ptr->alert_danger[index].danger_upper));
|
|
||||||
ui->checkBox_danger->setChecked(vib_alert_ptr->alert_danger[index].danger_enable);
|
|
||||||
if(vib_alert_ptr->alert_danger[index].danger_upper > 0){
|
|
||||||
slider_danger->m_upper = vib_alert_ptr->alert_danger[index].danger_upper;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -37,6 +37,7 @@ private:
|
|||||||
std::shared_ptr<VibrationData> vib_alert_ptr = nullptr;
|
std::shared_ptr<VibrationData> vib_alert_ptr = nullptr;
|
||||||
int current_index;
|
int current_index;
|
||||||
void Init();
|
void Init();
|
||||||
|
void update();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SETPOINT_H
|
#endif // SETPOINT_H
|
||||||
|
@ -105,7 +105,7 @@ void SingleRelay::OnButtonGroup(QAbstractButton *slot_btn) {
|
|||||||
std::shared_ptr<VibrationData> vib_data = std::dynamic_pointer_cast<VibrationData>(base_ptr);
|
std::shared_ptr<VibrationData> vib_data = std::dynamic_pointer_cast<VibrationData>(base_ptr);
|
||||||
if((vib_data->base_config_[var].standby && vib_data->base_config_[var + 1].standby && !(var % 2)))
|
if((vib_data->base_config_[var].standby && vib_data->base_config_[var + 1].standby && !(var % 2)))
|
||||||
continue;
|
continue;
|
||||||
QString item_str = QString("S%1C%2P##NO (Slot %3 Channel %4 Not OK)").arg(QString::number(button_id, 10).rightJustified(2, '0')).arg(QString::number(var+1, 10).rightJustified(2, '0')).arg(button_id).arg(var+1);
|
QString item_str = QString("%1 (Slot %2 Channel %3 Not OK)").arg(vib_data->base_config_[var].point_name).arg(button_id).arg(var+1);
|
||||||
QListWidgetItem *item = new QListWidgetItem(item_str);
|
QListWidgetItem *item = new QListWidgetItem(item_str);
|
||||||
QString item_data = QString("S%1C%2P##NO").arg(QString::number(button_id, 10).rightJustified(2, '0')).arg(QString::number(var+1, 10).rightJustified(2, '0'));
|
QString item_data = QString("S%1C%2P##NO").arg(QString::number(button_id, 10).rightJustified(2, '0')).arg(QString::number(var+1, 10).rightJustified(2, '0'));
|
||||||
item->setData(Qt::UserRole, item_data);
|
item->setData(Qt::UserRole, item_data);
|
||||||
|
@ -17,7 +17,7 @@ TMRRelayAssociation::TMRRelayAssociation(int slot,int cardtype,QWidget *parent)
|
|||||||
}
|
}
|
||||||
ui->label_slot_no->setText(QString::number(slot_no));
|
ui->label_slot_no->setText(QString::number(slot_no));
|
||||||
QVBoxLayout *layout_available = new QVBoxLayout(ui->widget_available);
|
QVBoxLayout *layout_available = new QVBoxLayout(ui->widget_available);
|
||||||
list_widget_available = new DraggableListWidget;
|
list_widget_available = new QListWidget();
|
||||||
layout_available->addWidget(list_widget_available);
|
layout_available->addWidget(list_widget_available);
|
||||||
list_widget_available->setDragEnabled(true);
|
list_widget_available->setDragEnabled(true);
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ TMRRelayAssociation::TMRRelayAssociation(int slot,int cardtype,QWidget *parent)
|
|||||||
connect(treeView_relay,&QTreeView::customContextMenuRequested,this,&TMRRelayAssociation::on_treeView_Relay_customContextMenuRequested);
|
connect(treeView_relay,&QTreeView::customContextMenuRequested,this,&TMRRelayAssociation::on_treeView_Relay_customContextMenuRequested);
|
||||||
current_index = ui->comboBox_relay_ch->currentIndex();
|
current_index = ui->comboBox_relay_ch->currentIndex();
|
||||||
Init();
|
Init();
|
||||||
|
onComboBoxIndexChanged(current_index);
|
||||||
// QString expr = "((S01C01A1 + S01C02A1 + (S02C01A1 * S02C01A2)) * (S02C01A2 + S02C01A1 + (S02C01A1 + S02C01A2)) * (S02C01A1 * S02C01A2))";
|
// QString expr = "((S01C01A1 + S01C02A1 + (S02C01A1 * S02C01A2)) * (S02C01A2 + S02C01A1 + (S02C01A1 + S02C01A2)) * (S02C01A1 * S02C01A2))";
|
||||||
// setExpressionToTreeView(treeView_relay, expr);
|
// setExpressionToTreeView(treeView_relay, expr);
|
||||||
}
|
}
|
||||||
@ -116,10 +116,37 @@ void TMRRelayAssociation::Init(){
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
relay_data = std::dynamic_pointer_cast<TmrrelayassociationData>(base_ptr);
|
relay_data = std::dynamic_pointer_cast<TmrrelayassociationData>(base_ptr);
|
||||||
qDebug() << "logic" <<relay_data->tmr_relay[current_index].logic_expression;
|
|
||||||
ui->checkBox_sgcc->setChecked(relay_data->sgcc_enable);
|
|
||||||
setExpressionToTreeView(treeView_relay, relay_data->tmr_relay[current_index].logic_expression);
|
|
||||||
|
|
||||||
|
qDebug() << "logic" <<relay_data->tmr_relay[current_index].logic_expression;
|
||||||
|
for(int i = 0 ; i < SLOT_NUM ; i++){
|
||||||
|
std::shared_ptr<CardBase> cardbase_ptr = ConfigMgr::Instance()->GetSlotPtr(i + 1);
|
||||||
|
if(cardbase_ptr != nullptr &&
|
||||||
|
cardbase_ptr->card_type_ == kCardVibSingle){
|
||||||
|
qDebug() << "i" << i;
|
||||||
|
std::shared_ptr<VibrationData> ptr = std::dynamic_pointer_cast<VibrationData>(cardbase_ptr);
|
||||||
|
for (int var = 0; var < CHANNEL_COUNT; ++var) {
|
||||||
|
QString item_data,item_str;
|
||||||
|
if(ptr->alert_danger[var].direct_enable ||
|
||||||
|
ptr->alert_danger[var].x1_ampl_enable ||
|
||||||
|
ptr->alert_danger[var].x2_ampl_enable){
|
||||||
|
item_str = QString("%1 (槽位 %2 通道 %3 警报)").arg(ptr->base_config_[var].point_name).arg(ptr->base_config_[var].chan_id.mid(1,2)).arg(ptr->base_config_[var].chan_id.mid(4,2));
|
||||||
|
item_data = QString("%1A1").arg(ptr->base_config_[var].chan_id);
|
||||||
|
}
|
||||||
|
if(ptr->alert_danger[var].danger_enable){
|
||||||
|
item_str = QString("%1 (槽位 %2 通道 %3 危险)").arg(ptr->base_config_[var].point_name).arg(ptr->base_config_[var].chan_id.mid(1,2)).arg(ptr->base_config_[var].chan_id.mid(4,2));
|
||||||
|
item_data = QString("%1A2").arg(ptr->base_config_[var].chan_id);
|
||||||
|
}
|
||||||
|
channelNameMap[item_data] = item_str;
|
||||||
|
}
|
||||||
|
}else if(cardbase_ptr != nullptr &&
|
||||||
|
(cardbase_ptr->card_type_ == kCardSpeedSingle)){
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ui->checkBox_sgcc->setChecked(relay_data->sgcc_enable);
|
||||||
|
if(!relay_data->tmr_relay[current_index].logic_expression.isEmpty()){
|
||||||
|
setExpressionToTreeView(treeView_relay, relay_data->tmr_relay[current_index].logic_expression);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ExprNode* TMRRelayAssociation::parseExpression(const QString& expr, int& pos) {
|
ExprNode* TMRRelayAssociation::parseExpression(const QString& expr, int& pos) {
|
||||||
auto skipSpaces = [&]() {
|
auto skipSpaces = [&]() {
|
||||||
@ -174,7 +201,14 @@ ExprNode* TMRRelayAssociation::parseExpression(const QString& expr, int& pos) {
|
|||||||
}
|
}
|
||||||
QStandardItem* TMRRelayAssociation::buildItemTree(ExprNode* node) {
|
QStandardItem* TMRRelayAssociation::buildItemTree(ExprNode* node) {
|
||||||
if (!node) return nullptr;
|
if (!node) return nullptr;
|
||||||
QStandardItem* item = new QStandardItem(node->value);
|
QString displayText;
|
||||||
|
if (node->value == "+" || node->value == "*") {
|
||||||
|
displayText = (node->value == "+") ? "OR" : "AND"; // 运算符显示
|
||||||
|
} else {
|
||||||
|
displayText = channelNameMap.value(node->value, node->value); // 显示名
|
||||||
|
}
|
||||||
|
QStandardItem* item = new QStandardItem(displayText);
|
||||||
|
item->setData(node->value, Qt::UserRole); // 原始表达式key
|
||||||
for (ExprNode* child : node->children) {
|
for (ExprNode* child : node->children) {
|
||||||
item->appendRow(buildItemTree(child));
|
item->appendRow(buildItemTree(child));
|
||||||
}
|
}
|
||||||
@ -193,7 +227,8 @@ QString TMRRelayAssociation::buildLogicExpression(QStandardItem *item) {
|
|||||||
if (!item) return "";
|
if (!item) return "";
|
||||||
|
|
||||||
int childCount = item->rowCount();
|
int childCount = item->rowCount();
|
||||||
QString text = item->text().trimmed();
|
QVariant userData = item->data(Qt::UserRole);
|
||||||
|
QString text = userData.toString().trimmed();
|
||||||
|
|
||||||
if (childCount == 0) {
|
if (childCount == 0) {
|
||||||
// 叶子节点,直接返回表达式,比如 S01C01A1
|
// 叶子节点,直接返回表达式,比如 S01C01A1
|
||||||
@ -360,28 +395,28 @@ void TMRRelayAssociation::OnButtonGroup(QAbstractButton *slot_btn) {
|
|||||||
int button_id = object_name.right(object_name.length() - 15).toInt();
|
int button_id = object_name.right(object_name.length() - 15).toInt();
|
||||||
std::shared_ptr<CardBase> base_ptr = ConfigMgr::Instance()->GetSlotPtr(button_id);
|
std::shared_ptr<CardBase> base_ptr = ConfigMgr::Instance()->GetSlotPtr(button_id);
|
||||||
std::shared_ptr<VibrationData> ptr = std::dynamic_pointer_cast<VibrationData>(base_ptr);
|
std::shared_ptr<VibrationData> ptr = std::dynamic_pointer_cast<VibrationData>(base_ptr);
|
||||||
QString item_str = QString("*");
|
QListWidgetItem *item_and = new QListWidgetItem("AND");
|
||||||
QListWidgetItem *item_or = new QListWidgetItem("*");
|
item_and->setData(Qt::UserRole, "*");
|
||||||
item_or->setData(Qt::UserRole, "*");
|
|
||||||
list_widget_available->addItem(item_or);
|
|
||||||
|
|
||||||
QListWidgetItem *item_and = new QListWidgetItem("+");
|
|
||||||
item_and->setData(Qt::UserRole, "+");
|
|
||||||
list_widget_available->addItem(item_and);
|
list_widget_available->addItem(item_and);
|
||||||
|
|
||||||
|
QListWidgetItem *item_or = new QListWidgetItem("OR");
|
||||||
|
item_or->setData(Qt::UserRole, "+");
|
||||||
|
list_widget_available->addItem(item_or);
|
||||||
for(int var = 0; var < CHANNEL_COUNT ; ++var){
|
for(int var = 0; var < CHANNEL_COUNT ; ++var){
|
||||||
|
QString item_data;
|
||||||
if(ptr->alert_danger[var].direct_enable ||
|
if(ptr->alert_danger[var].direct_enable ||
|
||||||
ptr->alert_danger[var].x1_ampl_enable ||
|
ptr->alert_danger[var].x1_ampl_enable ||
|
||||||
ptr->alert_danger[var].x2_ampl_enable){
|
ptr->alert_danger[var].x2_ampl_enable){
|
||||||
QString item_str = QString("S%1C%2A1 (槽位 %3 通道 %4 警报)").arg(QString::number(button_id, 10).rightJustified(2, '0')).arg(QString::number(var+1, 10).rightJustified(2, '0')).arg(button_id).arg(var+1);
|
QString item_str = QString("%1 (槽位 %3 通道 %4 警报)").arg(ptr->base_config_[var].point_name).arg(button_id).arg(var+1);
|
||||||
QListWidgetItem *item = new QListWidgetItem(item_str);
|
QListWidgetItem *item = new QListWidgetItem(item_str);
|
||||||
QString item_data = QString("S%1C%2A1").arg(QString::number(button_id, 10).rightJustified(2, '0')).arg(QString::number(var+1, 10).rightJustified(2, '0'));
|
item_data = QString("S%1C%2A1").arg(QString::number(button_id, 10).rightJustified(2, '0')).arg(QString::number(var+1, 10).rightJustified(2, '0'));
|
||||||
item->setData(Qt::UserRole, item_data);
|
item->setData(Qt::UserRole, item_data);
|
||||||
list_widget_available->addItem(item);
|
list_widget_available->addItem(item);
|
||||||
}
|
}
|
||||||
if(ptr->alert_danger[var].danger_enable){
|
if(ptr->alert_danger[var].danger_enable){
|
||||||
QString item_str = QString("S%1C%2A2 (槽位 %3 通道 %4 危险)").arg(QString::number(button_id, 10).rightJustified(2, '0')).arg(QString::number(var+1, 10).rightJustified(2, '0')).arg(button_id).arg(var+1);
|
QString item_str = QString("%1 (槽位 %3 通道 %4 危险)").arg(ptr->base_config_[var].point_name).arg(button_id).arg(var+1);
|
||||||
QListWidgetItem *item = new QListWidgetItem(item_str);
|
QListWidgetItem *item = new QListWidgetItem(item_str);
|
||||||
QString item_data = QString("S%1C%2A2").arg(QString::number(button_id, 10).rightJustified(2, '0')).arg(QString::number(var+1, 10).rightJustified(2, '0'));
|
item_data = QString("S%1C%2A2").arg(QString::number(button_id, 10).rightJustified(2, '0')).arg(QString::number(var+1, 10).rightJustified(2, '0'));
|
||||||
item->setData(Qt::UserRole, item_data);
|
item->setData(Qt::UserRole, item_data);
|
||||||
list_widget_available->addItem(item);
|
list_widget_available->addItem(item);
|
||||||
}
|
}
|
||||||
@ -404,9 +439,6 @@ void TMRRelayAssociation::on_pushButton_confirm_clicked()
|
|||||||
for (int i = 0; i < root->rowCount(); ++i) {
|
for (int i = 0; i < root->rowCount(); ++i) {
|
||||||
QStandardItem *topItem = root->child(i);
|
QStandardItem *topItem = root->child(i);
|
||||||
QString expr = buildLogicExpression(topItem);
|
QString expr = buildLogicExpression(topItem);
|
||||||
// if (!finalExpr.isEmpty()) {
|
|
||||||
// finalExpr += " OR ";
|
|
||||||
// }
|
|
||||||
finalExpr += expr;
|
finalExpr += expr;
|
||||||
}
|
}
|
||||||
ExprValidationResult result = validateLogicExpression(finalExpr);
|
ExprValidationResult result = validateLogicExpression(finalExpr);
|
||||||
@ -429,9 +461,6 @@ void TMRRelayAssociation::onComboBoxIndexChanged(int index){
|
|||||||
for (int i = 0; i < root->rowCount(); ++i) {
|
for (int i = 0; i < root->rowCount(); ++i) {
|
||||||
QStandardItem *topItem = root->child(i);
|
QStandardItem *topItem = root->child(i);
|
||||||
QString expr = buildLogicExpression(topItem);
|
QString expr = buildLogicExpression(topItem);
|
||||||
// if (!finalExpr.isEmpty()) {
|
|
||||||
// finalExpr += " OR ";
|
|
||||||
// }
|
|
||||||
finalExpr += expr;
|
finalExpr += expr;
|
||||||
}
|
}
|
||||||
ExprValidationResult result = validateLogicExpression(finalExpr);
|
ExprValidationResult result = validateLogicExpression(finalExpr);
|
||||||
|
@ -27,24 +27,25 @@ public:
|
|||||||
using QStandardItemModel::QStandardItemModel;
|
using QStandardItemModel::QStandardItemModel;
|
||||||
|
|
||||||
QStringList mimeTypes() const override {
|
QStringList mimeTypes() const override {
|
||||||
return { "application/x-custom" };
|
// 支持自定义类型和 QListWidget 默认类型
|
||||||
|
return { "application/x-custom", "application/x-qabstractitemmodeldatalist" };
|
||||||
}
|
}
|
||||||
|
|
||||||
bool dropMimeData(const QMimeData *data, Qt::DropAction action,
|
bool dropMimeData(const QMimeData *data, Qt::DropAction action,
|
||||||
int row, int column, const QModelIndex &parent) override {
|
int row, int column, const QModelIndex &parent) override {
|
||||||
if (!data->hasFormat("application/x-custom"))
|
QStandardItem *parentItem = this->itemFromIndex(parent);
|
||||||
return false;
|
if (!parentItem)
|
||||||
|
parentItem = this->invisibleRootItem();
|
||||||
|
|
||||||
|
if (data->hasFormat("application/x-custom")) {
|
||||||
QByteArray rawData = data->data("application/x-custom");
|
QByteArray rawData = data->data("application/x-custom");
|
||||||
QString customText = QString::fromUtf8(rawData);
|
QString customText = QString::fromUtf8(rawData);
|
||||||
|
|
||||||
QStandardItem *newItem = new QStandardItem(customText);
|
QStandardItem *newItem = new QStandardItem(customText);
|
||||||
|
newItem->setData(customText, Qt::UserRole); // 假设 data 也就是内容
|
||||||
newItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable |
|
newItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable |
|
||||||
Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled);
|
Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled);
|
||||||
|
|
||||||
QStandardItem *parentItem = this->itemFromIndex(parent);
|
|
||||||
if (!parentItem) parentItem = this->invisibleRootItem();
|
|
||||||
|
|
||||||
if (row < 0)
|
if (row < 0)
|
||||||
parentItem->appendRow(newItem);
|
parentItem->appendRow(newItem);
|
||||||
else
|
else
|
||||||
@ -53,8 +54,37 @@ public:
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (data->hasFormat("application/x-qabstractitemmodeldatalist")) {
|
||||||
|
QByteArray encoded = data->data("application/x-qabstractitemmodeldatalist");
|
||||||
|
QDataStream stream(&encoded, QIODevice::ReadOnly);
|
||||||
|
|
||||||
|
while (!stream.atEnd()) {
|
||||||
|
int r, c;
|
||||||
|
QMap<int, QVariant> roleDataMap;
|
||||||
|
stream >> r >> c >> roleDataMap;
|
||||||
|
|
||||||
|
QString text = roleDataMap.value(Qt::DisplayRole).toString();
|
||||||
|
QVariant userData = roleDataMap.value(Qt::UserRole);
|
||||||
|
|
||||||
|
QStandardItem *newItem = new QStandardItem(text);
|
||||||
|
newItem->setData(userData, Qt::UserRole); // 保留附加数据
|
||||||
|
newItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable |
|
||||||
|
Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled);
|
||||||
|
|
||||||
|
if (row < 0)
|
||||||
|
parentItem->appendRow(newItem);
|
||||||
|
else
|
||||||
|
parentItem->insertRow(row, newItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
Qt::DropActions supportedDropActions() const override {
|
Qt::DropActions supportedDropActions() const override {
|
||||||
return Qt::CopyAction;
|
return Qt::CopyAction | Qt::MoveAction;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -90,11 +120,12 @@ private slots:
|
|||||||
private:
|
private:
|
||||||
Ui::TMRRelayAssociation *ui;
|
Ui::TMRRelayAssociation *ui;
|
||||||
QButtonGroup * btnGroup_slot = nullptr;
|
QButtonGroup * btnGroup_slot = nullptr;
|
||||||
DraggableListWidget *list_widget_available = nullptr;
|
QListWidget *list_widget_available = nullptr;
|
||||||
int current_index;
|
int current_index;
|
||||||
QTreeView *treeView_relay;
|
QTreeView *treeView_relay;
|
||||||
QStandardItemModel *model_Relay;
|
QStandardItemModel *model_Relay;
|
||||||
std::shared_ptr<TmrrelayassociationData> relay_data = nullptr;
|
std::shared_ptr<TmrrelayassociationData> relay_data = nullptr;
|
||||||
|
QMap<QString, QString> channelNameMap;
|
||||||
|
|
||||||
void Init();
|
void Init();
|
||||||
void buildTreeFromExpression(QTreeView *treeView, const QString &expr);
|
void buildTreeFromExpression(QTreeView *treeView, const QString &expr);
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>821</width>
|
<width>892</width>
|
||||||
<height>634</height>
|
<height>634</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@ -186,7 +186,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>110</x>
|
<x>110</x>
|
||||||
<y>538</y>
|
<y>538</y>
|
||||||
<width>691</width>
|
<width>751</width>
|
||||||
<height>40</height>
|
<height>40</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@ -980,38 +980,12 @@
|
|||||||
<string>TextLabel</string>
|
<string>TextLabel</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QPushButton" name="pushButton_and">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>540</x>
|
|
||||||
<y>380</y>
|
|
||||||
<width>51</width>
|
|
||||||
<height>41</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>与(+)</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QPushButton" name="pushButton_or">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>540</x>
|
|
||||||
<y>440</y>
|
|
||||||
<width>51</width>
|
|
||||||
<height>41</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>或(*)</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QWidget" name="widget_available" native="true">
|
<widget class="QWidget" name="widget_available" native="true">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>230</x>
|
<x>230</x>
|
||||||
<y>360</y>
|
<y>360</y>
|
||||||
<width>301</width>
|
<width>361</width>
|
||||||
<height>161</height>
|
<height>161</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@ -1021,7 +995,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>610</x>
|
<x>610</x>
|
||||||
<y>80</y>
|
<y>80</y>
|
||||||
<width>191</width>
|
<width>251</width>
|
||||||
<height>421</height>
|
<height>421</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user