Pārlūkot izejas kodu

节点名称去掉空格
编辑需求分析评估数据

chengxr 1 gadu atpakaļ
vecāks
revīzija
3b44e386e9

+ 13 - 0
ExpertClient/EXDataTableView.cpp

@@ -30,6 +30,8 @@ EXDataTableView::EXDataTableView(SchemePlanManager::SchemeProcessInfo process, Q
     initWidget();
     initLayout();
     connectSignalsAndSlots();
+
+    m_comboDelegate = new EXDataTableComboDelegate(this);
 }
 
 SchemePlanManager::SchemeProcessInfo EXDataTableView::process() const
@@ -218,6 +220,17 @@ void EXDataTableView::updateCurrentTable()
             }
         }
     }
+    if (m_process.type == SchemePlanManager::ImportEvalData || m_process.indexType == ProjectManager::TechIndex) {
+        for (int i = 0; i < vList.count(); i++) {
+            for (int j = 0; j < hList.count(); j++) {
+                QStandardItem *item = new QStandardItem();
+                item->setData(Qt::AlignCenter, Qt::TextAlignmentRole);
+                //                item->setEditable(false);
+                model->setItem(i, j, item);
+                table->setItemDelegate(m_comboDelegate);
+            }
+        }
+    }
 }
 
 CMind *EXDataTableView::mind1() const

+ 4 - 0
ExpertClient/EXDataTableView.h

@@ -17,6 +17,8 @@ class QTabWidget;
 class QVBoxLayout;
 class QHBoxLayout;
 
+class EXDataTableComboDelegate;
+
 /**
  * @brief The DataTableWidget class
  * 数据表, 整体上是包含多个 QTableView 的 QTabWidget
@@ -82,6 +84,8 @@ private:
     QStringList m_vNodes;
 
     QVector<qreal> m_values;
+
+    EXDataTableComboDelegate *m_comboDelegate;
 };
 
 #endif  // EXDATATABLEVIEW_H

+ 34 - 0
ExpertClient/EXDataViewDelegate.cpp

@@ -6,6 +6,8 @@
 #include <QButtonGroup>
 #include <QDebug>
 
+#include <QComboBox>
+
 SchemeBar::SchemeBar(const QString &lLabel, const QString &rLabel, const QStringList &vlist, QWidget *parent)
     : QDialog(parent), leftLabel(lLabel), rightLabel(rLabel), barValueList(vlist)
 {
@@ -44,3 +46,35 @@ void SchemeBar::barClicked(QAbstractButton *btn)
     emit setValue(btn->property("number").toString());
     this->close();
 }
+
+EXDataTableComboDelegate::EXDataTableComboDelegate(QObject *parent) : QStyledItemDelegate(parent) { }
+
+QWidget *EXDataTableComboDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem & /* option */,
+                                                const QModelIndex & /* index */) const
+{
+    QComboBox *w = new QComboBox(parent);
+
+    w->addItems({ "9", "5", "4", "3", "1" });
+
+    return w;
+}
+
+void EXDataTableComboDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
+{
+    QString value       = index.model()->data(index, Qt::EditRole).toString();
+    QComboBox *comboBox = static_cast<QComboBox *>(editor);
+    comboBox->setCurrentText(value);
+}
+
+void EXDataTableComboDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
+{
+    QComboBox *spinBox = static_cast<QComboBox *>(editor);
+    QString value      = spinBox->currentText();
+    model->setData(index, value, Qt::EditRole);
+}
+
+void EXDataTableComboDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option,
+                                                    const QModelIndex & /*index*/) const
+{
+    editor->setGeometry(option.rect);
+}

+ 16 - 0
ExpertClient/EXDataViewDelegate.h

@@ -2,6 +2,7 @@
 #define EXDATAVIEWDELEGATE_H
 
 #include <QDialog>
+#include <QStyledItemDelegate>
 
 class QAbstractButton;
 class SchemeBar : public QDialog
@@ -22,4 +23,19 @@ private:
     QStringList barValueList;
 };
 
+class EXDataTableComboDelegate : public QStyledItemDelegate
+{
+public:
+    explicit EXDataTableComboDelegate(QObject *parent = nullptr);
+
+    QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
+
+    void setEditorData(QWidget *editor, const QModelIndex &index) const override;
+
+    void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override;
+
+    void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option,
+                              const QModelIndex &index) const override;
+};
+
 #endif  // EXDATAVIEWDELEGATE_H

+ 15 - 0
ExpertClient/EXIndexView.cpp

@@ -7,6 +7,8 @@
 
 #include <QTabWidget>
 
+#include <QDebug>
+
 EXIndexView::EXIndexView(ProjectInfo *proj, QWidget *parent) : EXEvalView(proj, parent)
 {
     setTitle("指标体系");
@@ -33,5 +35,18 @@ void EXIndexView::setupTabWidget()
         if (ret) {
             m->setNodeList(list);
         }
+
+        CMind *mind = m->mind();
+        for (int i = 1; i < mind->levels(); i++) {
+            QList<CNodeData> nodes = mind->nodesInLevel(i);
+            for (CNodeData node : nodes) {
+                qDebug() << __FUNCTION__ << __LINE__ << "第" << i << "级节点" << node.name << endl;
+                qDebug() << __FUNCTION__ << __LINE__ << "子节点:" << endl;
+                QList<CNodeData> list = mind->subNodes(node);
+                for (CNodeData subNode : list) {
+                    qDebug() << __FUNCTION__ << __LINE__ << subNode.name << endl;
+                }
+            }
+        }
     }
 }

+ 15 - 0
QFD/CCanvas/CTextItem.cpp

@@ -4,6 +4,8 @@
 #include <QGraphicsSceneMouseEvent>
 #include <QTextDocument>
 #include <QPainter>
+#include <QTextCursor>
+#include <QCursor>
 
 #include <QDebug>
 
@@ -14,6 +16,7 @@ CTextItem::CTextItem(const QString &text, QGraphicsItem *parent) : QGraphicsText
     setFlags(QGraphicsItem::ItemIsFocusable | QGraphicsItem::ItemIsSelectable);
     setTextInteractionFlags(Qt::TextEditorInteraction);
     connect(document(), &QTextDocument::contentsChanged, this, &CTextItem::slotTextChanged);
+    connect(document(), &QTextDocument::contentsChange, this, &CTextItem::slotTextChange);
 }
 
 void CTextItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
@@ -103,3 +106,15 @@ void CTextItem::slotTextChanged()
 {
     m_textChanged = true;
 }
+
+void CTextItem::slotTextChange(int from, int charsRemoved, int charsAdded)
+{
+    Q_UNUSED(from)
+    Q_UNUSED(charsRemoved)
+    Q_UNUSED(charsAdded)
+    QTextCursor c = textCursor();
+    if (toPlainText().contains(" ")) {
+        setPlainText(toPlainText().remove(QRegExp("\\s")));
+        setTextCursor(c);
+    }
+}

+ 1 - 0
QFD/CCanvas/CTextItem.h

@@ -31,6 +31,7 @@ public:
 
 public slots:
     void slotTextChanged();
+    void slotTextChange(int from, int charsRemoved, int charsAdded);
 
 signals:
     void sigWillBeginEditing();

+ 3 - 3
QFD/widgets/DataTableItemDelegate.cpp

@@ -20,9 +20,9 @@ QWidget *DataTableComboDelegate::createEditor(QWidget *parent, const QStyleOptio
 
 void DataTableComboDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
 {
-    QString value      = index.model()->data(index, Qt::EditRole).toString();
-    QComboBox *spinBox = static_cast<QComboBox *>(editor);
-    spinBox->setCurrentText(value);
+    QString value       = index.model()->data(index, Qt::EditRole).toString();
+    QComboBox *comboBox = static_cast<QComboBox *>(editor);
+    comboBox->setCurrentText(value);
 }
 
 void DataTableComboDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const