#include "ConfigExpertWidget.h" #include "common/QFDIcon.h" #include <Common/Icon.h> #include <Widgets/Button.h> #include <Widgets/SpinBox.h> #include <QBoxLayout> #include <QSplitter> #include <QLabel> #include <QListWidget> ConfigExpertWidget::ConfigExpertWidget(QWidget *parent) : QWidget(parent) { initialize(); initLayout(); connectSignalsAndSlots(); refreshAddedList(); refreshExpList(); } void ConfigExpertWidget::initialize() { QPalette pal(palette()); pal.setColor(QPalette::Background, QColor("#ffffff")); setAutoFillBackground(true); setPalette(pal); m_vBoxLayout = new QVBoxLayout(this); m_titleLabel = new QLabel("专家配置", this); m_titleLabel->setObjectName("titleLabel"); m_titleLabel->setFixedHeight(50); m_titleLabel->setContentsMargins(10, 0, 0, 0); m_splitter = new QSplitter(Qt::Vertical, this); m_splitter->setChildrenCollapsible(false); m_addedWidget = new QWidget(this); m_addedWidget->setObjectName("addedWidget"); m_addedWidgetLayout = new QVBoxLayout(m_addedWidget); m_addedWidgetLayout->setSpacing(0); m_addedWidgetLayout->setMargin(0); m_addedListHeader = new QWidget(this); m_addedListHeader->setObjectName("addedListHeader"); m_addedListHeader->setFixedHeight(30); m_addedListHeaderLayout = new QHBoxLayout(m_addedListHeader); m_addedListTitleLabel = new QLabel("已添加", this); m_addedListTitleLabel->setObjectName("addedListTitleLabel"); m_addedListTitleLabel->setMargin(5); m_addedListTipsLabel = new QLabel("注:已添加专家的权重之和须等于1", this); m_addedListTipsLabel->setObjectName("addedListTipsLabel"); m_addedListTipsLabel->setFixedHeight(20); m_saveButton = new QPushButton(NEWFLICON(FluentIcon, SAVE)->icon(), "", this); m_saveButton->setObjectName("saveButton"); m_saveButton->setFixedSize(QSize(28, 28)); m_saveButton->setToolTip("保存"); m_addedListWidget = new QListWidget(this); m_addedListWidget->setObjectName("addedListWidget"); m_expWidget = new QWidget(this); m_expWidget->setObjectName("expWidget"); m_expWidgetLayout = new QVBoxLayout(m_expWidget); m_expWidgetLayout->setSpacing(0); m_expWidgetLayout->setMargin(0); m_expListHeader = new QWidget(this); m_expListHeader->setObjectName("expListHeader"); m_expListHeader->setFixedHeight(30); m_expListHeaderLayout = new QHBoxLayout(m_expListHeader); m_expListTitleLabel = new QLabel("专家列表", this); m_expListTitleLabel->setObjectName("expListTitleLabel"); m_expListTitleLabel->setMargin(5); m_refreshButton = new QPushButton(NEWFLICON(FluentIcon, SYNC)->icon(), "", this); m_refreshButton->setObjectName("refreshButton"); m_refreshButton->setFixedSize(QSize(28, 28)); m_refreshButton->setToolTip("刷新"); m_expListWidget = new QListWidget(this); m_expListWidget->setObjectName("expListWidget"); } void ConfigExpertWidget::initLayout() { m_vBoxLayout->setMargin(0); m_vBoxLayout->setSpacing(0); m_vBoxLayout->addWidget(m_titleLabel); m_vBoxLayout->addWidget(m_splitter); m_splitter->addWidget(m_addedWidget); m_splitter->addWidget(m_expWidget); m_addedWidgetLayout->addWidget(m_addedListHeader); m_addedWidgetLayout->addWidget(m_addedListWidget); m_addedWidgetLayout->addWidget(m_addedListTipsLabel, Qt::AlignBottom); m_expWidgetLayout->addWidget(m_expListHeader); m_expWidgetLayout->addWidget(m_expListWidget); m_addedListHeaderLayout->setMargin(0); m_addedListHeaderLayout->addWidget(m_addedListTitleLabel, Qt::AlignLeft); m_addedListHeaderLayout->addWidget(m_saveButton, Qt::AlignRight); m_expListHeaderLayout->setMargin(0); m_expListHeaderLayout->addWidget(m_expListTitleLabel, Qt::AlignLeft); m_expListHeaderLayout->addWidget(m_refreshButton, Qt::AlignRight); m_splitter->setStretchFactor(0, 2); m_splitter->setStretchFactor(1, 3); setStyleSheet("#titleLabel {color:#333333; font-size:16px}" "#addedListTipsLabel {color:#999999;}" "#addedListHeader {background-color:#f8f8f8;border: 1px solid rgba(0, 0, 0, 0.073);}" "#expListHeader {background-color:#f8f8f8;border: 1px solid rgba(0, 0, 0, 0.073);}" "QPushButton {border: 0;background-color: qlineargradient(x1: 0, y1: 0, x2: " "0, y2: 1,stop: 0 #f8f8f8, stop: 1 #f8f8f8);}" "QPushButton::hover {border: 1px solid rgba(0, 0, 0, 0.073);}" "QPushButton::pressed {background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #dadbde, " "stop: 1 #f6f7fa);}" "QListWidget {border: 1px solid rgba(0, 0, 0, 0.073);}" "QListView::item {background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #ffffff, stop: 0.9 " "#ffffff,stop: 1 #eeeeee);height:44;}" "QDoubleSpinBox {border: 1px solid rgba(0, 0, 0, 0.173);}" "#addedListTitleLabel {font:bold; font-size:12px;}" "#expListTitleLabel {font:bold; font-size:12px;}"); } void ConfigExpertWidget::connectSignalsAndSlots() { } void ConfigExpertWidget::refreshAddedList() { m_addedListWidget->clear(); for (int i = 1; i <= 3; i++) { QListWidgetItem *item = new QListWidgetItem; QWidget *w = new QWidget(); QHBoxLayout *hBox = new QHBoxLayout(w); QLabel *idx = new QLabel(QString::number(i)); idx->setFixedWidth(25); QLabel *name = new QLabel(QString("专家%1").arg(i * 2)); QDoubleSpinBox *spin = new QDoubleSpinBox(w); spin->setRange(0, 1); spin->setSingleStep(0.01); spin->setFixedSize(QSize(60, 25)); QPushButton *button = new QPushButton(NEWFLICON(QFDIcon, Minus)->icon(), "", w); button->setFixedSize(QSize(25, 25)); button->setIconSize(QSize(10, 10)); button->setToolTip("移除"); hBox->setSpacing(0); hBox->setMargin(10); hBox->addWidget(idx); hBox->addWidget(name); hBox->addSpacing(20); hBox->addWidget(spin, Qt::AlignCenter); hBox->addStretch(); hBox->addWidget(button, Qt::AlignRight); m_addedListWidget->addItem(item); m_addedListWidget->setItemWidget(item, w); idx->setStyleSheet("font-size:14px; color:#aaaaaa"); } } void ConfigExpertWidget::refreshExpList() { m_expListWidget->clear(); for (int i = 1; i <= 50; i++) { QListWidgetItem *item = new QListWidgetItem; QWidget *w = new QWidget(); QHBoxLayout *hBox = new QHBoxLayout(w); QLabel *idx = new QLabel(QString::number(i)); idx->setFixedWidth(25); QLabel *name = new QLabel(QString("专家%1").arg(i)); QPushButton *button = new QPushButton(NEWFLICON(FluentIcon, ADD)->icon(), "", w); button->setFixedSize(QSize(25, 25)); button->setIconSize(QSize(10, 10)); button->setToolTip("添加"); if (i % 2 == 0 && i <= 6) { button->setHidden(true); } hBox->setSpacing(0); hBox->setMargin(10); hBox->addWidget(idx); hBox->addWidget(name); hBox->addStretch(); hBox->addWidget(button, Qt::AlignRight); m_expListWidget->addItem(item); m_expListWidget->setItemWidget(item, w); idx->setStyleSheet("font-size:14px; color:#aaaaaa"); } }