#include "DialogNewDBVariable.h" #include "GvlManager.h" DialogNewDBVariable::DialogNewDBVariable(QWidget *parent) : QDialog(parent) { ui.setupUi(this); // 对话框初始化 initUI(); } DialogNewDBVariable::~DialogNewDBVariable() { } /// /// 对话框初始化 /// void DialogNewDBVariable::initUI() { this->setAttribute(Qt::WA_QuitOnClose); this->setWindowModality(Qt::ApplicationModal); ui.editValue->setText("0"); ui.editValue->setAlignment(Qt::AlignLeading); // 初始化类型列表(根据不同的变量模式) this->initTypeList(); // 设置参数默认值 ui.comboType->setCurrentIndex(1); ui.comboAccess->setCurrentIndex(0); ui.editName->setPlaceholderText("Name is required."); ui.editComment->setPlaceholderText("Type here to input comment."); ui.editCommAddress->setPlaceholderText("Address"); ui.editCommAddress->setText("40001"); // 默认不选中触发 ui.checkTrigger->setChecked(false); // 槽函数 connect(ui.createButton, SIGNAL(clicked()), this, SLOT(onButtonCreateClicked())); connect(ui.cancelButton, SIGNAL(clicked()), this, SLOT(reject())); // 设置固定窗体大小 this->setFixedSize(495, 499); } /// /// 2022-2-18,初始化类型列表(根据不同的变量模式添加不同的候选项) /// void DialogNewDBVariable::initTypeList() { QString strItem; for (int i = 0; i < GVL_BASIC_TYPE_COUNT; i++) { strItem = Utility::getTypeString((VALUE_TYPE)i); ui.comboType->addItem(strItem); } // 顺便再初始化一下Access的Combo //ui.comboAccess->addItem("All"); //ui.comboAccess->addItem("Read Only"); //ui.comboAccess->addItem("Write Only"); for (int i = 0; i < emGvlAccess.keyCount(); i++) { ui.comboAccess->addItem(emGvlAccess.key(i)); } } /// /// Create按钮 /// void DialogNewDBVariable::onButtonCreateClicked() { // 将控件设置为正常状态 Utility::setControlNormal(ui.editName); Utility::setControlNormal(ui.editValue); // 获取用户输入 m_strName = ui.editName->text(); m_strType = ui.comboType->currentText(); m_strValue = ui.editValue->text(); m_strComment = ui.editComment->text(); m_strCommAddress = ui.editCommAddress->text(); m_accessMode = static_cast(ui.comboAccess->currentIndex()); m_bTrigger = ui.checkTrigger->isChecked(); // 检查变量名 if (m_strName.isEmpty()) { Utility::VPCriticalMessageBox("Variable name is required!"); Utility::setControlError(ui.editName); return; } // 检查名字是否和当前页面重复 if (g_pGvlManager->isDuplicated(m_strGroup, m_strName)) { Utility::VPCriticalMessageBox("Variable name is duplicated!"); Utility::setControlError(ui.editName); return; } // 检查变量值是否和变量类型吻合 if (!g_pGvlManager->isValueValid(m_strType, m_strValue)) { Utility::VPCriticalMessageBox("Invalid value - type: " + m_strType + " ."); Utility::setControlError(ui.editValue); return; } this->accept(); }