#include "ProjectListWidget.h" #include "QFDIcon.h" #include "ProjectManager.h" #include "dbService/ClassSet.h" #include #include #include #include #include #include #include #include ProjectListItemWidget::ProjectListItemWidget(QWidget *parent) : QWidget(parent) { initWidgets(); initLayout(); } void ProjectListItemWidget::initWidgets() { m_name = new QLabel(this); m_name->setObjectName("name"); m_time = new QLabel(this); m_time->setObjectName("time"); m_taskLabel = new QLabel(this); m_taskLabel->setObjectName("taskLabel"); m_taskLabel->setText("任务名称:"); m_task = new QLabel(this); m_task->setObjectName("task"); m_typeLabel = new QLabel(this); m_typeLabel->setObjectName("typeLabel"); m_typeLabel->setText("评估类型:"); m_type = new QLabel(this); m_type->setObjectName("type"); m_open = new PushButton("打开", NEWFLICON(QFDIcon, Open), this); m_open->setObjectName("open"); m_edit = new PushButton("编辑", NEWFLICON(FluentIcon, EDIT), this); m_edit->setObjectName("edit"); setStyleSheet("#name {color:#1196db; font-size:15px; font:bold}" "#time {color:gray}" "#taskLabel {color: gray;}" "#task {color: gray;}" "#typeLabel {color: gray;}" "#type {color: gray;}"); } void ProjectListItemWidget::initLayout() { // 总体布局 m_layout = new QVBoxLayout(this); m_layout->setMargin(10); m_nameLayout = new QHBoxLayout(); m_layout->addLayout(m_nameLayout); m_layout->addSpacing(5); m_taskLayout = new QHBoxLayout(); m_layout->addLayout(m_taskLayout); m_typeLayout = new QHBoxLayout(); m_layout->addLayout(m_typeLayout); m_buttonLayout = new QHBoxLayout(); m_layout->addLayout(m_buttonLayout); // 名称 m_nameLayout->addWidget(m_name); m_nameLayout->addStretch(); m_nameLayout->addWidget(m_time); // 任务 m_taskLayout->setContentsMargins(10, 0, 10, 0); m_taskLayout->addWidget(m_taskLabel); m_taskLayout->addSpacing(5); m_taskLayout->addWidget(m_task); m_taskLayout->addStretch(); // 类型 m_typeLayout->setContentsMargins(10, 0, 10, 0); m_typeLayout->addWidget(m_typeLabel); m_typeLayout->addSpacing(5); m_typeLayout->addWidget(m_type); m_typeLayout->addStretch(); // 按钮 m_buttonLayout->addStretch(); m_buttonLayout->addWidget(m_open); m_buttonLayout->addWidget(m_edit); } void ProjectListItemWidget::setData(ProjectInfo *info) { m_info = info; if (info == nullptr) { return; } m_name->setText(info->projectName); QDateTime t = QDateTime::fromTime_t(info->estimateTime.toUInt()); m_time->setText(t.toString("yyyy-M-d")); m_task->setText(info->taskName); QString tStr; QList types = ProjectManager::evalTypeList(*info); for (int i = 0; i < types.count(); i++) { tStr += ProjectManager::nameOfEvalType(types[i]); if (i < types.count() - 1) { tStr += "、"; } } m_type->setText(tStr); } ProjectListWidget::ProjectListWidget(QWidget *parent) : QWidget(parent) { initWidgets(); initLayout(); connectSiganlsAndSlots(); } void ProjectListWidget::showProjects(QList list) { m_listWidget->clear(); for (ProjectInfo *info : list) { ProjectListItemWidget *w = new ProjectListItemWidget(m_listWidget); w->setData(info); QListWidgetItem *item = new QListWidgetItem(m_listWidget); item->setSizeHint(QSize(300, 135)); m_listWidget->setItemWidget(item, w); } } void ProjectListWidget::initWidgets() { QPalette pal(palette()); pal.setColor(QPalette::Background, QColor("#eeeeee")); setAutoFillBackground(true); setPalette(pal); m_vBoxLayout = new QVBoxLayout(this); m_listWidget = new QListWidget(this); m_listWidget->setAlternatingRowColors(true); m_listWidget->setStyleSheet("QListWidget {border: 1px solid rgba(0, 0, 0, 0.073);background: rgb(255, 255, " "255);alternate-background-color: rgb(244, 244, 255);}"); } void ProjectListWidget::initLayout() { m_vBoxLayout->setMargin(0); m_vBoxLayout->addWidget(m_listWidget); } void ProjectListWidget::connectSiganlsAndSlots() { connect(m_listWidget, &QListWidget::itemDoubleClicked, this, &ProjectListWidget::slotItemDoubleClicked); connect(m_listWidget, &QListWidget::itemClicked, this, &ProjectListWidget::slotItemClicked); connect(m_listWidget, &QListWidget::currentItemChanged, this, &ProjectListWidget::slotCurrentItemChanged); connect(m_listWidget, &QListWidget::currentRowChanged, this, &ProjectListWidget::slotCurrentRowChanged); connect(m_listWidget, &QListWidget::itemSelectionChanged, this, &ProjectListWidget::slotItemSelectionChanged); } void ProjectListWidget::slotItemDoubleClicked(QListWidgetItem *item) { qDebug() << __FUNCTION__ << __LINE__; } void ProjectListWidget::slotItemClicked(QListWidgetItem *item) { qDebug() << __FUNCTION__ << __LINE__; } void ProjectListWidget::slotCurrentItemChanged(QListWidgetItem *current, QListWidgetItem *previous) { qDebug() << __FUNCTION__ << __LINE__; } void ProjectListWidget::slotCurrentRowChanged(int currentRow) { qDebug() << __FUNCTION__ << __LINE__; } void ProjectListWidget::slotItemSelectionChanged() { qDebug() << __FUNCTION__ << __LINE__; }