settingnum.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #include "settingnum.h"
  2. #include "ui_settingnum.h"
  3. #include <QDebug>
  4. #include <QFile>
  5. #include "customcombobox.h"
  6. #include "onesettingitem.h"
  7. SettingNum::SettingNum(QDialog *parent) :
  8. QDialog(parent),
  9. ui(new Ui::SettingNum)
  10. {
  11. ui->setupUi(this);
  12. m_logger = spdlog::get("EyeMap");
  13. if(m_logger == nullptr)
  14. {
  15. qDebug() << "获取 EyeMap logger 失败";
  16. return;
  17. }
  18. /* 设置无边框 */
  19. this->setWindowFlags(Qt::FramelessWindowHint);
  20. /* 加载QSS */
  21. QFile fileQss(":/qss/SettingNum/SettingNum.qss");
  22. if(fileQss.open(QFile::ReadOnly))
  23. {
  24. QString qss = fileQss.readAll();
  25. this->setStyleSheet(qss);
  26. fileQss.close();
  27. } else
  28. {
  29. SPDLOG_LOGGER_ERROR(m_logger, "加载QSS文件失败");
  30. }
  31. /* 设置下拉框可选个数 */
  32. QStringList listRow;
  33. listRow << "1" << "2" << "3" << "4";
  34. ui->comboBox_rowNum->addItems(listRow);
  35. ui->comboBox_columnNum->addItem("1");
  36. ui->comboBox_columnNum->addItem("2");
  37. ui->comboBox_rowNum->setCurrentIndex(1);
  38. ui->comboBox_columnNum->setCurrentIndex(1);
  39. connect(ui->pBtn_close, &QPushButton::clicked, this, &SettingNum::do_pBtn_close);
  40. }
  41. SettingNum::~SettingNum()
  42. {
  43. delete ui;
  44. }
  45. /* 设置行数和列数 */
  46. void SettingNum::setRowAndColumn(int row, int column)
  47. {
  48. ui->comboBox_rowNum->setCurrentIndex(row - 1);
  49. ui->comboBox_columnNum->setCurrentIndex(column - 1);
  50. /* 根据 行 x 列 总数计算需要显示的个数 */
  51. int num = row * column;
  52. for(int i = 0; i < 8; i++)
  53. {
  54. OneSettingItem *item = new OneSettingItem(ui->widget_list);
  55. item->setNum(i + 1);
  56. m_listItem.append(item);
  57. }
  58. /* 移动item的位置 */
  59. layoutItem(num);
  60. }
  61. void SettingNum::do_pBtn_close()
  62. {
  63. this->close();
  64. }
  65. /**
  66. * @brief 布局item
  67. *
  68. * @param num 需要显示的几个item
  69. */
  70. void SettingNum::layoutItem(int num)
  71. {
  72. for(auto item : m_listItem)
  73. {
  74. auto dy = (item->getNum() - 1) * 48;
  75. item->move(0, dy);
  76. if(item->getNum() > num)
  77. {
  78. item->hide();
  79. } else
  80. {
  81. item->show();
  82. }
  83. }
  84. }