EditNodeWidget.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #include "EditNodeWidget.h"
  2. #include <Widgets/LineEdit.h>
  3. #include <Widgets/Button.h>
  4. #include <QLabel>
  5. #include <QBoxLayout>
  6. #include <QGridLayout>
  7. #include <QDebug>
  8. EditNodeWidget::EditNodeWidget(QWidget *parent) : QDialog(parent)
  9. {
  10. initWindow();
  11. initWidgets();
  12. initLayout();
  13. connectSignalsAndSlots();
  14. }
  15. CNodeData EditNodeWidget::node() const
  16. {
  17. return m_node;
  18. }
  19. void EditNodeWidget::setNode(CNodeData n)
  20. {
  21. m_node = n;
  22. m_name->setText(n.name);
  23. m_remark->setText(n.remark);
  24. m_dimen->setText(n.dimension);
  25. m_confirm->setEnabled(false);
  26. }
  27. void EditNodeWidget::initWindow()
  28. {
  29. setWindowTitle("编辑节点");
  30. // setWindowFlags(Qt::Window);
  31. // setWindowFlag(Qt::WindowMinMaxButtonsHint, false);
  32. setModal(true);
  33. setWindowFlags(Qt::Dialog);
  34. setWindowFlag(Qt::WindowContextHelpButtonHint, false);
  35. setFixedSize(350, 250);
  36. }
  37. void EditNodeWidget::initWidgets()
  38. {
  39. m_nameLabel = new QLabel("名称:", this);
  40. m_name = new LineEdit(this);
  41. m_remarkLabel = new QLabel("内涵:", this);
  42. m_remarkLabel->setContentsMargins(0, 10, 0, 10);
  43. m_remark = new TextEdit(this);
  44. m_dimen = new LineEdit(this);
  45. m_dimenLabel = new QLabel("量纲:", this);
  46. m_confirm = new PushButton("保存", this);
  47. m_cancel = new PushButton("取消", this);
  48. }
  49. void EditNodeWidget::initLayout()
  50. {
  51. m_layout = new QVBoxLayout(this);
  52. m_layout->setMargin(20);
  53. m_gridLayout = new QGridLayout();
  54. m_layout->addLayout(m_gridLayout);
  55. m_layout->addSpacing(20);
  56. m_btnLayout = new QHBoxLayout();
  57. m_layout->addLayout(m_btnLayout);
  58. int minW = 280;
  59. m_name->setMinimumWidth(minW);
  60. m_remark->setMinimumWidth(minW);
  61. m_dimen->setMinimumWidth(minW);
  62. m_gridLayout->addWidget(m_nameLabel, 0, 0, 1, 1, Qt::AlignRight);
  63. m_gridLayout->addWidget(m_name, 0, 1, 1, 1, Qt::AlignLeft);
  64. m_gridLayout->addWidget(m_remarkLabel, 1, 0, 1, 1, Qt::AlignRight | Qt::AlignTop);
  65. m_gridLayout->addWidget(m_remark, 1, 1, 1, 1, Qt::AlignLeft);
  66. m_gridLayout->addWidget(m_dimenLabel, 2, 0, 1, 1, Qt::AlignRight);
  67. m_gridLayout->addWidget(m_dimen, 2, 1, 1, 1, Qt::AlignLeft);
  68. m_btnLayout->addStretch();
  69. m_btnLayout->addWidget(m_confirm);
  70. m_btnLayout->addSpacing(20);
  71. m_btnLayout->addWidget(m_cancel);
  72. }
  73. void EditNodeWidget::connectSignalsAndSlots()
  74. {
  75. connect(m_name, &LineEdit::textChanged, this, &EditNodeWidget::slotEditChanged);
  76. connect(m_remark, &TextEdit::textChanged, this, &EditNodeWidget::slotEditChanged);
  77. connect(m_dimen, &LineEdit::textChanged, this, &EditNodeWidget::slotEditChanged);
  78. connect(m_confirm, &PushButton::clicked, this, &EditNodeWidget::slotConfirmCLicked);
  79. connect(m_cancel, &PushButton::clicked, this, &EditNodeWidget::slotConcelClicked);
  80. }
  81. void EditNodeWidget::slotEditChanged()
  82. {
  83. m_confirm->setEnabled(true);
  84. m_node.name = m_name->text();
  85. m_node.remark = m_remark->toPlainText();
  86. m_node.dimension = m_dimen->text();
  87. }
  88. void EditNodeWidget::slotConfirmCLicked()
  89. {
  90. emit sigSaveNode(m_node);
  91. close();
  92. }
  93. void EditNodeWidget::slotConcelClicked()
  94. {
  95. close();
  96. }