AddSchemeWidget.cpp 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #include "AddSchemeWidget.h"
  2. #include <Widgets/Button.h>
  3. #include <Widgets/LineEdit.h>
  4. #include <QBoxLayout>
  5. #include <QLabel>
  6. #include <QDebug>
  7. #include <QFileDialog>
  8. AddSchemeWidget::AddSchemeWidget(QWidget *parent) : QDialog(parent)
  9. {
  10. initWindow();
  11. initialize();
  12. initLayout();
  13. connectSignalsAndSlots();
  14. }
  15. void AddSchemeWidget::clearInputs()
  16. {
  17. m_nameEdit->clear();
  18. m_schemeEdit->clear();
  19. }
  20. void AddSchemeWidget::initWindow()
  21. {
  22. setWindowTitle("新建方案");
  23. setModal(true);
  24. setWindowFlags(Qt::Dialog);
  25. setWindowFlag(Qt::WindowContextHelpButtonHint, false);
  26. resize(370, 350);
  27. }
  28. void AddSchemeWidget::initialize()
  29. {
  30. m_vBoxLayout = new QVBoxLayout(this);
  31. m_gridLayout = new QGridLayout();
  32. m_nameLabel = new QLabel("方案名称:", this);
  33. m_nameLabel->setFixedHeight(44);
  34. m_nameEdit = new LineEdit(this);
  35. m_nameEdit->setFixedWidth(250);
  36. m_schemeLabel = new QLabel("方案描述:", this);
  37. m_schemeLabel->setFixedHeight(35);
  38. m_schemeEdit = new TextEdit(this);
  39. m_schemeEdit->setFixedWidth(250);
  40. m_schemeEdit->setFixedHeight(150);
  41. m_picButton = new PushButton("方案图片", this);
  42. m_picLine = new LineEdit(this);
  43. m_picLine->setFixedWidth(250);
  44. m_picLine->setEnabled(false);
  45. m_hBoxLayout = new QHBoxLayout();
  46. m_confirButton = new PushButton("生成", this);
  47. m_confirButton->setEnabled(false);
  48. }
  49. void AddSchemeWidget::initLayout()
  50. {
  51. m_vBoxLayout->setMargin(15);
  52. m_vBoxLayout->addLayout(m_gridLayout);
  53. m_gridLayout->addWidget(m_nameLabel, 0, 0, 1, 1, Qt::AlignRight);
  54. m_gridLayout->addWidget(m_nameEdit, 0, 1, 1, 2, Qt::AlignLeft);
  55. m_gridLayout->addWidget(m_schemeLabel, 1, 0, 1, 1, Qt::AlignRight | Qt::AlignTop);
  56. m_gridLayout->addWidget(m_schemeEdit, 1, 1, 1, 2, Qt::AlignLeft);
  57. m_gridLayout->addWidget(m_picButton, 2, 0, 1, 1, Qt::AlignRight);
  58. m_gridLayout->addWidget(m_picLine, 2, 1, 1, 2, Qt::AlignLeft);
  59. m_vBoxLayout->addSpacing(20);
  60. m_vBoxLayout->addStretch();
  61. m_vBoxLayout->addLayout(m_hBoxLayout);
  62. m_hBoxLayout->addStretch();
  63. m_hBoxLayout->addWidget(m_confirButton);
  64. }
  65. void AddSchemeWidget::connectSignalsAndSlots()
  66. {
  67. connect(m_picButton, &QPushButton::clicked, this, &AddSchemeWidget::slotSelectPic);
  68. connect(m_nameEdit, &LineEdit::textChanged, this, &AddSchemeWidget::slotContentChanged);
  69. connect(m_schemeEdit, &TextEdit::textChanged, this, &AddSchemeWidget::slotContentChanged);
  70. connect(m_picLine, &LineEdit::textChanged, this, &AddSchemeWidget::slotContentChanged);
  71. connect(m_confirButton, &PushButton::clicked, this, &AddSchemeWidget::slotConfirmed);
  72. }
  73. void AddSchemeWidget::slotSelectPic()
  74. {
  75. qDebug() << __FUNCTION__ << __LINE__ << endl;
  76. QFileDialog::Options options;
  77. options |= QFileDialog::DontUseNativeDialog;
  78. QString selectedFilter;
  79. QString fileName = QFileDialog::getOpenFileName(this, "选择图片", "", "图片(*.jpg *.png *jpeg *bmp)",
  80. &selectedFilter, options);
  81. bool fileValid = true;
  82. if (fileName.isEmpty() || fileName.size() <= 0) {
  83. fileValid = false;
  84. return;
  85. }
  86. m_picLine->setText(fileName);
  87. }
  88. void AddSchemeWidget::slotContentChanged()
  89. {
  90. bool valid = m_nameEdit->text().length() > 0 && m_schemeEdit->toPlainText().length() > 0
  91. && m_picLine->text().length() > 0;
  92. m_confirButton->setEnabled(valid);
  93. }
  94. void AddSchemeWidget::slotConfirmed()
  95. {
  96. emit sigSchemeInfoConfirmed(m_nameEdit->text(), m_schemeEdit->toPlainText(), m_picLine->text());
  97. close();
  98. }