EditNodeWidget.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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_confirm->setEnabled(false);
  25. }
  26. void EditNodeWidget::initWindow()
  27. {
  28. setWindowTitle("编辑节点");
  29. // setWindowFlags(Qt::Window);
  30. // setWindowFlag(Qt::WindowMinMaxButtonsHint, false);
  31. setModal(true);
  32. setWindowFlags(Qt::Dialog);
  33. setWindowFlag(Qt::WindowContextHelpButtonHint, false);
  34. setFixedSize(350, 250);
  35. }
  36. void EditNodeWidget::initWidgets()
  37. {
  38. m_nameLabel = new QLabel("名称:", this);
  39. m_name = new LineEdit(this);
  40. m_remarkLabel = new QLabel("内涵:", this);
  41. m_remarkLabel->setContentsMargins(0, 10, 0, 10);
  42. m_remark = new TextEdit(this);
  43. m_confirm = new PushButton("保存", this);
  44. m_cancel = new PushButton("取消", this);
  45. }
  46. void EditNodeWidget::initLayout()
  47. {
  48. m_layout = new QVBoxLayout(this);
  49. m_layout->setMargin(20);
  50. m_gridLayout = new QGridLayout();
  51. m_layout->addLayout(m_gridLayout);
  52. m_layout->addSpacing(20);
  53. m_btnLayout = new QHBoxLayout();
  54. m_layout->addLayout(m_btnLayout);
  55. m_name->setMinimumWidth(280);
  56. m_remark->setMinimumWidth(280);
  57. m_gridLayout->addWidget(m_nameLabel, 0, 0, 1, 1, Qt::AlignRight);
  58. m_gridLayout->addWidget(m_name, 0, 1, 1, 1, Qt::AlignLeft);
  59. m_gridLayout->addWidget(m_remarkLabel, 1, 0, 1, 1, Qt::AlignRight | Qt::AlignTop);
  60. m_gridLayout->addWidget(m_remark, 1, 1, 1, 1, Qt::AlignLeft);
  61. m_btnLayout->addStretch();
  62. m_btnLayout->addWidget(m_confirm);
  63. m_btnLayout->addSpacing(20);
  64. m_btnLayout->addWidget(m_cancel);
  65. }
  66. void EditNodeWidget::connectSignalsAndSlots()
  67. {
  68. connect(m_name, &LineEdit::textChanged, this, &EditNodeWidget::slotEditChanged);
  69. connect(m_remark, &TextEdit::textChanged, this, &EditNodeWidget::slotEditChanged);
  70. connect(m_confirm, &PushButton::clicked, this, &EditNodeWidget::slotConfirmCLicked);
  71. connect(m_cancel, &PushButton::clicked, this, &EditNodeWidget::slotConcelClicked);
  72. }
  73. void EditNodeWidget::slotEditChanged()
  74. {
  75. m_confirm->setEnabled(true);
  76. m_node.name = m_name->text();
  77. m_node.remark = m_remark->toPlainText();
  78. }
  79. void EditNodeWidget::slotConfirmCLicked()
  80. {
  81. emit sigSaveNode(m_node);
  82. close();
  83. }
  84. void EditNodeWidget::slotConcelClicked()
  85. {
  86. close();
  87. }