1、实现CUIRadioComponent

feature/struct-menu-20241023
mzh 2 weeks ago
parent 7f621ffc43
commit a4491cca36

@ -20,8 +20,10 @@ CUIConfig *CFDStructDataSolverKvislManager::genInviscidUIConfig()
{
return new CUIConfig(
{{"type", "Widget"}},
{new CUIConfig({{"type", "ButtonBox"}, // 组:模型
{"name", tr("Model")}},
{new CUIConfig({{"type", "RadioComponent"}, // 组:模型
{"name", tr("Model")},
{"widget","GroupBox"},
},
{new CUIConfig({{"type", "RadioButton"}, // 按钮:无粘
{"name", tr("Inviscid")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:层流

@ -9,10 +9,12 @@
#include<CUIPushButton.h>
#include<CUICheckBox.h>
#include<CUIRadioButton.h>
#include<CUIRadioComponent.h>
#include<QDebug>
#include<CUIButtonBox.h>
#include<QVBoxLayout>
/**
* @brief CUI::CUI
* @param conf
@ -53,6 +55,8 @@ void CUI::buildUI()
widget = new CUIRadioButton(conf, subCUI);
} else if(type == "ButtonBox") {
widget = new CUIButtonBox(conf, subCUI);
} else if(type == "RadioComponent"){
widget = new CUIRadioComponent(conf,subCUI);
}
if (widget) {
qDebug() << "----------- ui widget is not null";

@ -17,6 +17,7 @@ class CUIPushButton;
class CUICheckBox;
class CUIRadioButton;
class CUIButtonBox;
class CUIRadioComponent;
/**
* @brief The CUI class ,config
@ -45,6 +46,7 @@ private:
CUICheckBox* uiCheckBox;
CUIRadioButton* uiRadioButton;
CUIButtonBox* uiButtonBox;
CUIRadioComponent* uiRadioComponent;
QVector<CUI*> subCUI;

@ -17,7 +17,7 @@ QLayout *CUIComponentBaseContainerWidget::getLayout(CUIConfig *conf)
QString layoutConf = conf->getPropertyValue("layout");
if (layoutConf == "QVBoxLayout") {
layout = new QVBoxLayout;
} else if (layoutConf == "QVBoxLayout") {
} else if (layoutConf == "QHBoxLayout") {
layout = new QHBoxLayout;
} else {
layout = new QVBoxLayout;

@ -3,6 +3,7 @@ HEADERS += \
$$PWD/CUIComponentBaseContainerWidget.h \
$$PWD/CUIComponentBaseWidget.h \
$$PWD/CUIDefine.h \
$$PWD/CUIRadioComponent.h \
CUI.h \
CUIButtonBox.h \
CUICheckBox.h \
@ -21,6 +22,7 @@ SOURCES += \
$$PWD/CUIComponentBase.cpp \
$$PWD/CUIComponentBaseContainerWidget.cpp \
$$PWD/CUIComponentBaseWidget.cpp \
$$PWD/CUIRadioComponent.cpp \
CUI.cpp \
CUIButtonBox.cpp \
CUICheckBox.cpp \

@ -0,0 +1,56 @@
#include "CUIRadioComponent.h"
#include "CUIConfig.h"
#include "QVBoxLayout"
#include <QGroupBox>
#include <QWidget>
#include <QRadioButton>
#include <QLabel>
CUIRadioComponent::CUIRadioComponent(CUIConfig *conf, QVector<CUI *> &subCUI, QWidget *parent) : CUIComponentBaseContainerWidget(parent)
{
this->conf = conf;
iniUI(subCUI);
}
void CUIRadioComponent::iniUI(QVector<CUI *> &subCUI)
{
QString widget_type = this->conf->getPropertyValue("widget");
QHBoxLayout* mainLayout = new QHBoxLayout;
m_layout = this->getLayout(conf);
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);
for(auto conf:this->conf->getSub()){
QRadioButton* radio = new QRadioButton(conf->getPropertyValue("name"));
m_layout->addWidget(radio);
}
}
void CUIRadioComponent::iniUI_Component()
{
m_label = new QLabel(conf->getPropertyValue("name"));
m_Component = new QWidget;
m_Component->setLayout(m_layout);
for(auto conf:this->conf->getSub()){
QRadioButton* radio = new QRadioButton(conf->getPropertyValue("name"));
m_layout->addWidget(radio);
}
}

@ -0,0 +1,58 @@
/**
*
*/
#ifndef CUIRADIOCOMPONENT_H
#define CUIRADIOCOMPONENT_H
#include <QObject>
#include <CUIComponentBaseContainerWidget.h>
class CUIConfig;
class CUI;
class QLabel;
class QHBoxLayout;
class QGroupBox;
class QWidget;
class CUIRadioComponent : public CUIComponentBaseContainerWidget
{
Q_OBJECT
public:
/**
* @brief CUIRadioComponent
* @param conf
* @param subCUI
* @param parent
*/
explicit CUIRadioComponent(CUIConfig* conf, QVector<CUI*> &subCUI, QWidget *parent = nullptr);
private:
/**
* @brief iniUIui
* @param subCUI
*/
void iniUI(QVector<CUI*> &subCUI);
/**
* @brief iniUI_GroupBoxgroupbox
*/
void iniUI_GroupBox();
/**
* @brief iniUI_Componentcomponent
*/
void iniUI_Component();
CUIConfig* conf;
QLabel* m_label;
QLayout* m_layout;
QGroupBox* m_GroupBox;
QWidget* m_Component;
signals:
};
#endif // CUIRADIOCOMPONENT_H
Loading…
Cancel
Save