EXDataViewDelegate.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include "EXDataViewDelegate.h"
  2. #include <QHBoxLayout>
  3. #include <QLabel>
  4. #include <QPushButton>
  5. #include <QButtonGroup>
  6. #include <QDebug>
  7. SchemeBar::SchemeBar(const QString &lLabel, const QString &rLabel, const QStringList &vlist, QWidget *parent)
  8. : QDialog(parent), leftLabel(lLabel), rightLabel(rLabel), barValueList(vlist)
  9. {
  10. setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowCloseButtonHint);
  11. QHBoxLayout *hlay = new QHBoxLayout;
  12. QLabel *l = new QLabel(leftLabel);
  13. QLabel *r = new QLabel(rightLabel);
  14. QHBoxLayout *centerLay = new QHBoxLayout;
  15. QButtonGroup *btnGroup = new QButtonGroup(this);
  16. for (QString &v : barValueList) {
  17. QPushButton *btn = new QPushButton(v);
  18. centerLay->addWidget(btn);
  19. btnGroup->addButton(btn);
  20. if (v.startsWith("1/")) {
  21. btn->setText(v.split("/")[1]);
  22. } else {
  23. btn->setText(v);
  24. }
  25. btn->setProperty("number", v);
  26. }
  27. connect(btnGroup, static_cast<void (QButtonGroup::*)(QAbstractButton *)>(&QButtonGroup::buttonClicked), this,
  28. &SchemeBar::barClicked);
  29. hlay->addWidget(l);
  30. hlay->addLayout(centerLay);
  31. hlay->addWidget(r);
  32. setLayout(hlay);
  33. }
  34. void SchemeBar::barClicked(QAbstractButton *btn)
  35. {
  36. emit setValue(btn->property("number").toString());
  37. this->close();
  38. }