123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- #include "PropertyDataLinkEdit.h"
- #include "DialogDataLink.h"
- #include <QHBoxLayout>
- #include <QToolButton>
- #include <QFocusEvent>
- #include "vpControls/VControlObject.h"
- #include "vpControls/VTableControl.h"
- #include "vpControls/VPieChart.h"
- #include "vpControls/VButton.h"
- #include "WindowAppUiView.h"
- #include "WindowAppUiScene.h"
- PropertyDataLinkEdit::PropertyDataLinkEdit(
- QWidget* parent,
- const QString& strPropertyName
- )
- : QWidget(parent)
- , m_strPropertyName(strPropertyName)
- {
- // 设置自定义属性在属性表中的显示风格
- QHBoxLayout* layout = new QHBoxLayout(this);
- layout->setMargin(0);
- layout->setSpacing(0);
- // 数据连接信息输入框
- m_editInput = new QLineEdit(this);
- m_editInput->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred));
- // 增加... 按钮
- QToolButton* button = new QToolButton(this);
- button->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred));
- button->setText(QLatin1String("..."));
- layout->addWidget(m_editInput);
- layout->addWidget(button);
- setFocusPolicy(Qt::StrongFocus);
- setAttribute(Qt::WA_InputMethodEnabled);
-
- connect(button, SIGNAL(clicked()), this, SLOT(buttonClicked()));
- //// 初始化控件名称和具体类型枚举值的对应关系
- //m_ControlTypeNames.insert(CLASS_NAME_BUTTON, VALUE_TYPE::Control_Button);
- //m_ControlTypeNames.insert(CLASS_NAME_LABEL, VALUE_TYPE::Control_Label);
- //m_ControlTypeNames.insert(CLASS_NAME_CHECKBOX, VALUE_TYPE::Control_CheckBox);
- //m_ControlTypeNames.insert(CLASS_NAME_RADIOBOX, VALUE_TYPE::Control_RadioBox);
- //m_ControlTypeNames.insert(CLASS_NAME_GROUPBOX, VALUE_TYPE::Control_Groupbox);
- //m_ControlTypeNames.insert(CLASS_NAME_IMAGE, VALUE_TYPE::Control_Image);
- //m_ControlTypeNames.insert(CLASS_NAME_LINEDIT, VALUE_TYPE::Control_LineEdit);
- //m_ControlTypeNames.insert(CLASS_NAME_COMBOBOX, VALUE_TYPE::Control_ComboBox);
- //m_ControlTypeNames.insert(CLASS_NAME_LISTBOX, VALUE_TYPE::Control_Listbox);
- //m_ControlTypeNames.insert(CLASS_NAME_VALUECONTROL, VALUE_TYPE::Control_Value);
- //m_ControlTypeNames.insert(CLASS_NAME_PIECHART, VALUE_TYPE::Control_PieChart);
- //m_ControlTypeNames.insert(CLASS_NAME_WAVECHART, VALUE_TYPE::Control_Wavechart);
- //m_ControlTypeNames.insert(CLASS_NAME_TABLECONTROL, VALUE_TYPE::Control_Table);
- m_pControlObject = WindowAppUiScene::m_pCurrentObject;
- }
- PropertyDataLinkEdit::~PropertyDataLinkEdit()
- {
- }
- /// <summary>
- /// 获取用户设定的数据连接
- /// </summary>
- /// <returns></returns>
- DataLink PropertyDataLinkEdit::getValue() const
- {
- return this-> m_DataLink;
- }
- ///// <summary>
- ///// 保存控件类型名字,用于根据不同类型的控件显示不同的属性对话框数据
- ///// </summary>
- ///// <param name="className"></param>
- //void DesignerPropertyDataLinkEdit::setControlClass(const QString& className)
- //{
- // // TODO: 此处绑定的时候需要知道这个Edit对应的是DataLink的哪个索引
- //
- //
- // //if (m_ControlTypeNames.find(className) != m_ControlTypeNames.end())
- // //{
- // // this->m_DataLink.m_bindControlType = m_ControlTypeNames[className];
- // //}
- // //else
- // //{
- // // this->m_DataLink.m_bindControlType = VALUE_TYPE::Unknown_Type;
- // //}
- //}
- ///// <summary>
- ///// 保存绑定控件的指针
- ///// </summary>
- ///// <param name="pControlObject"></param>
- //void DesignerPropertyDataLinkEdit::setControlPtr(QObject* pControlObject)
- //{
- // Q_ASSERT(pControlObject != nullptr);
- //
- // m_pControlObject = (VButton*)(pControlObject);
- //}
- /// <summary>
- /// 设置弹出属性对话框的初始值
- /// 所有的控件都需要在这里实现数据链接数值的手工保存
- /// </summary>
- /// <param name="datalinkString"></param>
- void PropertyDataLinkEdit::setValue(const QString& datalinkString)
- {
- // 将用户设置的DataLink设置到界面中显示
- m_editInput->setText(datalinkString);
- // 将最新的dataLink信息保存进控件信息中
-
- // 2021-12-11 如果是简单控件类型,则直接设置
- if (!m_pControlObject->isComplexControl())
- {
- m_pControlObject->setDataLink(m_DataLink);
- }
- // 如果是复杂控件类型,则需要根据属性名字设置到对应的位置中
- else
- {
- m_pControlObject->updateExPropertyDataLink(m_strPropertyName, m_DataLink);
- }
-
- }
- /// <summary>
- /// 点击...按钮弹出数据链接设置对话框
- /// </summary>
- void PropertyDataLinkEdit::buttonClicked()
- {
- DialogDataLink dlg(m_strPropertyName, m_pControlObject, this->m_DataLink, this);
- if (dlg.exec() == QDialog::Accepted)
- {
- DataLink datalink = dlg.getValue();
- //if (datalink != this->m_DataLink)
- //{
- this->m_DataLink = datalink;
- // 发送信号
- emit dataLinkChanged(datalink.toString());
- //}
- }
- }
|