You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AppFlow/CFDStruct/CUIProperty/CUIRadioComponent.cpp

70 lines
1.8 KiB
C++

#include "CUIRadioComponent.h"
#include "CUIConfig.h"
#include "QVBoxLayout"
#include <QGroupBox>
#include <QWidget>
#include <QRadioButton>
#include <QLabel>
#include <QButtonGroup>
CUIRadioComponent::CUIRadioComponent(CUIConfig *conf, QVector<CUI *> &subCUI, QWidget *parent) : CUIComponentBaseContainerWidget(parent)
{
this->conf = conf;
iniUI(subCUI);
connect(m_ButtonGroup,QOverload<int>::of(&QButtonGroup::buttonClicked),[=](int idx){
this->conf->setValue((int)idx);
});
}
void CUIRadioComponent::iniUI(QVector<CUI *> &subCUI)
{
QString widget_type = this->conf->getPropertyValue("widget");
QHBoxLayout* mainLayout = new QHBoxLayout;
m_layout = this->getLayout(conf);
m_ButtonGroup = new QButtonGroup;
if(widget_type == "GroupBox"){
iniUI_GroupBox();
mainLayout->addWidget(m_GroupBox);
}else if(widget_type == "Component"){
iniUI_Component();
mainLayout->addWidget(m_label);
mainLayout->addWidget(m_Component);
}
this->setLayout(mainLayout);
}
void CUIRadioComponent::iniUI_GroupBox()
{
m_GroupBox = new QGroupBox;
m_GroupBox->setTitle(conf->getPropertyValue("name"));
m_GroupBox->setLayout(m_layout);
int idx = 0;
for(auto conf:this->conf->getSub()){
QRadioButton* radio = new QRadioButton(conf->getPropertyValue("name"));
m_layout->addWidget(radio);
m_ButtonGroup->addButton(radio,idx);
idx++;
}
}
void CUIRadioComponent::iniUI_Component()
{
m_label = new QLabel(conf->getPropertyValue("name"));
m_Component = new QWidget;
m_Component->setLayout(m_layout);
int idx = 0;
for(auto conf:this->conf->getSub()){
QRadioButton* radio = new QRadioButton(conf->getPropertyValue("name"));
m_layout->addWidget(radio);
m_ButtonGroup->addButton(radio,idx);
idx++;
}
}